WCF相互SSL安全性什么时候使用证书?

时间:2012-12-14 12:05:42

标签: wcf wcf-security x509certificate ssl

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

这是对的吗?

  1. 客户端向服务器提供客户端公共证书

  2. 服务器向客户端提供服务器公共证书

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

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

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

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

  7. 还是以其他方式工作?

    WCF Mutual SSL Certs

1 个答案:

答案 0 :(得分:4)

RFC 2246,第7.4节详述了握手。其他版本的SSL / TLS与您的问题的工作方式非常相似。

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

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

对于订购,我在下面的摘要列表中加粗了您问题的部分内容。以下是MSDN的一个很好的总结:

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

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