使用SSL存储时私钥在哪里?

时间:2013-06-02 13:58:24

标签: wcf security ssl

在我将在本地网络上托管的服务之间使用ssl sertificate之前,我想了解更多关于它的信息。通过在互联网上阅读,我了解SSL的工作原理。

  1. 客户端连接到WCF服务
  2. WCF服务回复了它的公钥及其证书
  3. 客户端然后验证证书并使用公钥加密其凭证
  4. wcf服务然后使用它的私钥解密该消息并验证信息
  5. 等...
  6. 知道这里有一些我不明白的事情:

    • 在第4步.WCF服务在哪里找到它的私钥?
    • 为什么需要SSL证书?从在互联网上阅读,需要验证服务是我想要的。这对我没有意义,因为首先我知道我的本地网络上的服务的IP地址(我知道该服务是谁)。假装这不是我在互联网上的情况,有人试图破解我。在那种情况下,我相信,如果我连接到他们的服务而不是真正的服务,我无能为力,因为如果你回想一下第2步,WCF服务回复公钥和证书(在纯文本上)意味着有人可以获得该证书并使用它吗?
    • 如果我使用SSL sertifiate并且有人可以访问托管该服务的计算机,他可能会以某种方式获取私钥,使我的连接不安全?

2 个答案:

答案 0 :(得分:16)

首先,第三步中缺少一些步骤。第三步实际发生的是:

  • 客户端验证证书
  • 客户端和服务器来回发送一些消息,协商他们可以使用哪种密钥加密
  • 客户端为该加密算法创建密钥,使用服务器的公钥加密密钥,并将加密的密钥发送到服务器。
  • 服务器现在可以使用私钥解密密钥。
  • 客户端和服务器现在就密钥算法达成一致,并且他们共享密钥。现在使用共享密钥对所有通信进行加密和解密。
  • 客户端使用密钥加密其凭据...

原因是双重的。首先,公钥加密的数学比秘密密钥加密的数学要贵得多。。我们的想法是只进行一次昂贵的数学计算,以便交换共享秘密。其次,客户端知道服务器的公钥,但客户端可能甚至没有公钥,那么服务器如何向其发送秘密消息?这就是他们必须就共享密钥达成一致的原因。

无论如何转到你的问题:

  

服务在哪里保留其私钥?

在Windows上,它位于操作系统提供的证书存储中。在其他操作系统上,我不知道。

  

为什么需要证书?

假设您想用信用卡购买我的割草机,但您担心我可能真的是骗子。你想知道我的真实姓名,这样你就可以起诉我,如果我开始在你的卡上冲我的拉斯维加斯之旅。

因此,当我们进行交易时,我会向您展示一张纸,上面写着“Eric Lippert声称这张纸的所有者是Eric Lippert,已签名,Eric Lippert”。你相信我吗?如果你已经信任Eric Lippert那么你不需要那张纸,如果你不相信Eric Lippert,那么这篇论文就没有建立信任。这是一张“自签名证书”。

现在,如果我向您展示一张纸,上面写着“VeriSign声称这张纸的所有者是Eric Lippert,签署了VeriSign”,那么问题是:您相信VeriSign已经验证了我的身份吗?如果你这样做,那就证明你正在与之交谈的人是他们声称的人。

这就是证书的目的。它确定特定公钥实际上与特定组织相关联,因为它是由相互信任的第三方签署的认证机构签名。

当您在线购买信用卡时,您可能会相信该网站只对该卡进行授权收费。证书验证您要用于加密的公钥确实是该网站的公钥,而不是一些恶意黑客的公钥。

  

但是带有公钥的证书是公开的,所以有人不能抓住证书并伪装成服务器吗?

是的,但这对他们没有帮助,除非他们窃取了私密的私钥。拥有其他人证书的人不能解密使用公钥加密的邮件,因此他们无法与客户端进行密钥交换!即使他们设法欺骗客户端,他们将获得的是用客户端选择的密钥编码的比特流,这是一个秘密密钥,如果没有证书的私有部分,攻击者无法获得该密钥。

  

这意味着:如果我允许访问我的私钥,有人可以冒充我,对吧?

是。整个系统的安全性取决于私钥的私密性。 这就是为什么它称为私钥如果攻击者获得对您私钥的访问权限,那么他们可以随意冒充您,所以保密,保持安全。如果您的密钥被泄露,则有一种机制可以撤销证书,但通常已经完成了损坏。

答案 1 :(得分:6)

Eric Lippert的答案很棒,但我想我会在几点上添加更多细节:

  • 这对我没有意义,因为我首先知道的IP地址 我在本地网络上的服务(我知道该服务是谁)

是的,如果您在内部和内部网络或受信任的安全LAN上,验证服务器身份正确的SSL确实没有多大好处。但是,SSL或更准确地说,TLS(传输层安全性)为您提供了加密通道,以便在客户端和服务器之间进行通信。这意味着如果客户端和服务器之间的任何人嗅探网络,他们将无法读取该消息。 TLS(SSL)是实现这一目标的最受支持和最简单的方法。

  • 如果我使用SSL sertifiate并且有人可以访问计算机 托管服务他可以以某种方式获得私钥制作我的 连接不安全?

如果有人拥有存储私钥的服务器的管理员访问权限(在证书中),并且该人有恶意,那么坦率地说,你在此之前已经失去了很长时间。将证书存储在证书库中时,可以设置有关谁能够读取,写入和修改证书的特定权限。

希望这有帮助。