2

我正在使用具有相互 SSL 安全性的 WCF 服务,我想检查我对何时使用什么证书的理解。

这个对吗?

  1. 客户端将客户端公共证书交给服务器

  2. 服务器将服务器公共证书交给客户端

  3. 客户端发送使用服务器公共证书加密的请求

  4. 服务器使用服务器私有证书解密请求

  5. 服务器发送使用客户端公共证书加密的响应

  6. 客户端使用客户端私有证书解密响应

或者它是否以其他方式工作?

WCF 相互 SSL 证书

4

1 回答 1

4

RFC 2246,第 7.4 节详细介绍了握手。就您的问题而言,其他版本的 SSL/TLS 的工作方式非常相似。

SSL/TLS 涉及两种类型的加密。非对称密钥加密和对称密钥加密。证书用于非对称密钥加密,仅在握手过程中使用。

证书使用的加密时间很短,在握手中使用。服务器公钥/私钥对(非对称密钥)用于保护会话密钥(对称密钥)。客户端公钥/私钥对用于向服务器证明客户端就是它所说的那个人。它知道这一点,因为客户端能够使用客户端私钥(只有它知道)加密数据(双方都知道的数据),并且服务器可以使用客户端公钥对其进行解密。

对于排序,我在下面的摘要列表中将您问题的部分加粗。这是来自MSDN的一个很好的总结:

TLS 握手协议涉及以下步骤:

  1. 客户端向服务器发送“Client hello”消息,以及客户端的随机值和支持的密码套件。
  2. 服务器通过向客户端发送“Server hello”消息以及服务器的随机值来响应。
  3. 服务器将其证书发送给客户端进行身份验证,并可能向客户端请求证书。服务器发送“Server hello done”消息。
  4. 如果服务器已向客户端请求证书,则客户端发送它
  5. 客户端创建一个随机的 Pre-Master Secret 并使用服务器证书中的公钥对其进行加密,将加密的 Pre-Master Secret 发送到服务器。
  6. 服务器接收到 Pre-Master Secret。服务器和客户端分别根据 Pre-Master Secret 生成 Master Secret 和会话密钥。
  7. 客户端向服务器发送“更改密码规范”通知,以指示客户端将开始使用新的会话密钥对消息进行散列和加密。客户端还发送“客户端完成”消息。
  8. 服务器收到“更改密码规范”并使用会话密钥将其记录层安全状态切换为对称加密。服务器向客户端发送“服务器完成”消息。
  9. 客户端和服务器现在可以通过他们建立的安全通道交换应用程序数据。从客户端发送到服务器以及从服务器发送到客户端的所有消息都使用会话密钥进行加密。

WCF 请求/响应都将在客户端/服务器切换到使用会话密钥(对称密钥)进行加密之后。此时它不会使用证书私钥/公钥。

于 2012-12-14T12:42:52.377 回答