我正在使用具有相互SSL安全性的WCF服务,我想检查一下我对何时使用证书的理解。
这是对的吗?
客户端向服务器提供客户端公共证书
服务器向客户端提供服务器公共证书
客户端发送使用服务器公共证书加密的请求
服务器使用服务器私有证书解密请求
服务器发送使用客户端公共证书加密的响应
客户端使用客户端私有证书解密响应
还是以其他方式工作?
答案 0 :(得分:4)
RFC 2246,第7.4节详述了握手。其他版本的SSL / TLS与您的问题的工作方式非常相似。
SSL / TLS涉及两种类型的加密。非对称密钥加密和对称密钥加密。证书用于非对称密钥加密,仅用于握手过程。
证书使用的加密时间非常短,用于握手。服务器公钥/私钥对(非对称密钥)用于保护会话密钥(对称密钥)。客户端公钥/私钥对用于向服务器证明客户端是它所说的人。它知道这一点,因为客户端能够使用客户端私钥(只有它知道)加密数据(双方都知道的数据),服务器可以使用客户端公钥对其进行解密。
对于订购,我在下面的摘要列表中加粗了您问题的部分内容。以下是MSDN的一个很好的总结:
TLS握手协议涉及以下步骤:
WCF请求/响应将全部在客户端/服务器切换到使用会话密钥(对称密钥)进行加密之后。此时它不会使用证书私钥/公钥。