首页 文章

.NET中的客户端证书

提问于
浏览
0

任何人都可以向我解释客户端证书和我们在SSL中看到的公共证书之间的区别吗?

为什么我们需要客户证书中的私钥?

我目前有一个客户端证书,没有与之关联的私钥,IIS一直要求私钥 .

请帮忙!

3 回答

  • 1

    使用客户端证书(顾名思义)在SSL / TLS握手期间向服务器验证客户端 . 为了将任何证书用于认证,认证方必须具有私钥,这是真实性的证明(换句话说,拥有私钥的人拥有该 Headers ) . 因此,如果使用某些证书对客户端进行身份验证,则必须具有相应的私钥 . 私钥永远不会离开客户端,它仅用于某些加密实现 .

    但是,你的问题令人困惑 . 在服务器上,您通常会将服务器验证到客户端,并为此使用服务器证书 . 您可以告诉服务器,某个客户端的证书是可信的,并且客户端可以使用此证书对自身进行身份验证,但您不需要客户端的私钥 . 所以你在做错了IIS .

  • 0

    我目前有一个没有与之关联的私钥的客户端证书

    这是一个矛盾 . 每个证书都有一个与之关联的私钥 . 它与证书一起安装在客户端 . 它实际上是在证书之前生成的 . 证书本身可以导出,但这没有私钥 . 这例如是完成的 . 如果客户端证书未由服务器已信任的人签名,则使服务器信任客户端 .

  • 1

    证书包含密钥对的公钥 . 有人持有密钥对的私钥,并保守秘密 . 它与证书分开存储,除非您将它们捆绑在一起以便在PFX文件中传输它们 .

    当服务器具有“服务器证书”时,这是一个带有公钥的证书,服务器也将私钥安全地保存在某处 . 它使用私钥在SSL握手上签名 . 客户端只需要服务器证书(仅具有服务器密钥对的公钥)来验证该签名,以确定服务器确实保留了服务器密钥对的私钥 .

    当客户端在SSL连接上发送“客户端证书”以进行客户端身份验证时,客户端将自己的私钥保密 . 当您在其他地方生成证书时,在客户端计算机上导入客户端证书时,可能会忽略导入私钥 . 但是客户端需要拥有该客户端私钥才能在SSL握手中签名,以向服务器证明它拥有客户端密钥对的私钥 .

    服务器只能看到客户端证书,该证书只有公钥 . 公钥以及客户端签署的内容证明客户端持有私钥 . 双方都没有将自己的私钥发送给另一方 . 他们只发送证书,证书只带有公钥和证书材料(通用名称,发行人等)

相关问题