首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SSL存储私钥在哪里?

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

Stack Overflow用户
提问于 2013-06-02 13:58:23
回答 2查看 4.6K关注 0票数 6

在我将在本地网络上托管的服务之间使用ssl服务器之前,我想进一步了解它。通过在互联网上阅读,我理解了SSL是如何工作的。

  1. 客户端连接到WCF服务
  2. WCF服务使用它的公钥和证书进行应答
  3. 然后,客户端验证证书并使用公钥加密他的凭据。
  4. wcf服务然后用它的私钥解密该消息并验证该信息
  5. 等等。

以下是一些我不明白的事情:

  • 在第4步,WCF服务在哪里找到它的私钥?
  • 为什么需要SSL证书?从互联网上的阅读,需要验证服务是谁,我希望它是谁。这对我来说没有意义,因为首先我知道本地网络上我的服务的IP地址(我知道该服务是谁)。假装这不是我在网上的情况,有人想要黑我。在这种情况下,我认为如果我连接到他们的服务而不是我真正的服务,我什么也做不了,因为如果您还记得在步骤2中WCF服务使用公钥和证书(在纯文本上),这意味着有人可以获取该证书并使用它?
  • 如果我使用SSL服务器,并且有人可以访问承载该服务的计算机,他可以以某种方式获得私钥,使我的连接变得不安全?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-02 15:00:47

首先,在第三步中缺少一些步骤。第三步的实际情况是:

  • 客户端验证证书。
  • 客户端和服务器来回发送一些消息,通过协商双方可以使用哪种密匙加密。
  • 客户端为该加密算法创建一个密钥,使用服务器的公钥对密钥进行加密,并将加密的密钥发送给服务器。
  • 服务器现在可以使用它们的私钥解密密钥。
  • 客户端和服务器现在同意一个秘密密钥算法,并且他们共享密钥。所有通信现在都用共享密钥加密和解密。
  • 客户用密匙加密他们的凭证..。

这样做的原因有两个。首先,公钥密码的数学比秘密密钥密码的数学要昂贵得多。这样做的目的是只做一次昂贵的数学运算,以便交换一个共享的秘密。其次,客户机知道服务器的公钥,但是客户机可能甚至没有公钥,那么服务器如何向它发送秘密消息呢?这就是为什么他们必须就共享密钥达成一致。

不管怎么说,继续问你的问题:

该服务的私钥存放在哪里?

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

为什么需要证书?

假设你想用信用卡买我的割草机,但你担心我可能是个骗子。你想知道我的真名,这样你就可以起诉我,如果我开始在你的名片上对我的拉斯维加斯旅行收费的话。

所以当我们做交易的时候,我给你们看一张纸,上面写着"Eric Lippert声称这张纸的所有者是Eric Lippert,签名的是Eric Lippert。“你相信我吗?如果您已经信任Eric,那么您就不需要一张纸,如果您不信任Eric,那么纸就不能建立信任。这是一份“自签证书”。

现在,如果我给你看一张纸,上面写着"VeriSign公司声称这张纸的所有者是Eric,签名了VeriSign",那么问题是:你相信VeriSign已经核实了我的身份吗?如果你这样做了,那么这就是你与之交谈的那个人声称自己是谁的证据。

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

当你在网上用信用卡买东西时,你大概会相信网站只会对该信用卡收取授权费用。证书验证您将要用于加密的公钥实际上是该网站的公钥,而不是某个邪恶黑客的公钥。

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

是的,但除非他们偷了私钥,否则这帮不了他们。拥有他人证书的人无法解密用公钥加密的消息,因此他们将无法与客户端进行密钥交换!即使他们设法欺骗客户端,他们将得到的只是一个由客户选择的秘密密钥编码的比特流,如果没有证书的私有部分,攻击者就无法获得这个密钥。

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

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

票数 16
EN

Stack Overflow用户

发布于 2013-06-02 15:46:52

Eric Lippert的回答很棒,但我想我应该补充一些更多的细节,以回应以下几点:

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

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

  • 如果我使用SSL服务器,并且有人可以访问承载该服务的计算机,他可以以某种方式获得私钥,使我的连接变得不安全?

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

希望这能有所帮助。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16883438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档