【问题标题】:client certificates in .NET.NET 中的客户端证书
【发布时间】:2011-09-28 13:16:03
【问题描述】:

谁能向我解释一下客户端证书和我们在 SSL 中看到的公共证书之间的区别?

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

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

请帮忙!

【问题讨论】:

  • 我建议您在开始实施之前先阅读一些有关数字证书如何工作的信息。 technet.microsoft.com/en-us/library/bb123848%28EXCHG.65%29.aspx
  • 欢迎来到 SO。您可以通过编辑来更新您自己的问题。您可以为问题投票(赞成或反对),如果您得到满足您需求并回答了您的问题的答案,您可以将其标记为答案

标签: asp.net iis ssl client certificate


【解决方案1】:

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

当服务器有一个“服务器证书”时,这是一个带有公钥的证书,并且服务器也将私钥安全地保存在某个地方。它使用私钥在 SSL 握手上签名。客户端只需要服务器证书,它只有服务器密钥对的公钥,来验证签名,确定服务器确实持有服务器密钥对的私钥。

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

服务器只看到客户端证书,它只有公钥。公钥,连同客户端签署的东西,证明客户端持有私钥。双方都没有将自己的私钥发送给对方。他们只发送证书,证书只携带公钥和证书内容(通用名、颁发者等)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 您好 EJP,公钥证书不包含私钥。在正常的 SSL 握手中,证书中的公钥将用于加密服务器的私钥可以解密的数据。现在我的困惑是..客户端证书是公钥证书吗?
    • user693425:(1) 证书不包含私钥。我没有另外说明; (2) 非对称加密仅发生在某些密码套件的 SSL 握手中,而不是“正常的 SSL 握手”; (3) 所有 PKI 证书都是“公钥证书”。
    • 目前我同时拥有 .cer 和 .pfx 证书。我在服务器端安装 pfx 证书。我的客户端应用程序使用 .cer 证书建立连接。但是,从我的 asp.net 应用程序中,我不断收到此错误:在 LocalMachine 存储或 CurrentUser 存储中找不到证书。 我已经将证书导入到 Windows 密钥库和权限中授予“网络服务”。有什么想法吗?
    【解决方案3】:

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

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

    【讨论】:

    • 嗨,Eugene,现在我有一个服务器证书,我已将其导入服务器的密钥库。那我如何生成客户端证书?
    • @user693425 这个问题太宽泛了。请通过阅读一些书来学习 PKI 的基础知识——这将使您既了解概念,又可以从 SO 获得更多通用信息。 SO 是一个针对实际问题的技术网站,希望了解理论。
    • 已更新问题,使其在技术上更加详细。将在理论部分阅读更多内容......谢谢
    • @user693425 我已经对您的版本进行了回滚,因为新问题与以前的问题完全不同。您可以将您的技术问题作为一个新问题提交(点击“由 Eugene Mayevski 编辑……之前”以查看历史记录并从那里获取您的版本并将其复制到新问题中)。
    猜你喜欢
    • 2015-04-17
    • 1970-01-01
    • 2011-11-08
    • 2018-05-27
    • 1970-01-01
    • 2022-07-01
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多