SSL默认仅仅用于验证服务器的身份,所以用户不需要任何证明自己的证书(这解决了我长久以来的困惑 *_*)
SSL的验证过程:(摘自http://www.yesky.com/ServerIndex/77131904641400832/20040515/1797805.shtml)
简单的说便是:SSL客户端(也是TCP的客户端)在TCP链接建立之后,发出一个Clienth*llo来发起握手,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应一个Serverh*llo,这里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。Client在收到这个消息后会生成一个秘密消息,用SSL服务器的公钥加密后传过去,SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。
以上过程隐含了几个要素:
1 客户端如何确认服务器发过来的身份证明?
客户端必须先安装一个受信的CA证书,这个证书是Windows自己带的(比如verisign公司的)。所以,客户端会先到自己的受信CA证书库中寻找这个证书是不是这些受信CA颁发的,如果不是,可以拒绝这个连接。
2 如果服务器同样需要验证客户端,需要什么证明?
首先,客户端需要获得一个自己的证书。(从某个CA那里)
其次,服务器同样需要安装CA证书
SSL的验证过程:(摘自http://www.yesky.com/ServerIndex/77131904641400832/20040515/1797805.shtml)
简单的说便是:SSL客户端(也是TCP的客户端)在TCP链接建立之后,发出一个Clienth*llo来发起握手,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应一个Serverh*llo,这里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。Client在收到这个消息后会生成一个秘密消息,用SSL服务器的公钥加密后传过去,SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。
以上过程隐含了几个要素:
1 客户端如何确认服务器发过来的身份证明?
客户端必须先安装一个受信的CA证书,这个证书是Windows自己带的(比如verisign公司的)。所以,客户端会先到自己的受信CA证书库中寻找这个证书是不是这些受信CA颁发的,如果不是,可以拒绝这个连接。
2 如果服务器同样需要验证客户端,需要什么证明?
首先,客户端需要获得一个自己的证书。(从某个CA那里)
其次,服务器同样需要安装CA证书