openssl向SSL服务器发送请求

来源:互联网 发布:java小型购物网站设计 编辑:程序博客网 时间:2024/04/28 21:22

打印所有server端发过来的请求

openssl s_client-connect corp.zhc.com:4443


将客户端发送的内容也显示出来。

openssl s_client-connect corp.zhc.com:4443 -msg


将状态也打印出来

openssl s_client-connect corp.zhc.com:4443 -msg –state


强制使用tls1.0协议

openssl s_client-connect corp.zhc.com:4443 -msg –state -tls1


强制使用ssl2协议,现在很多服务器都不支持ssl2和ssl3了,所以可能会直接握手失败。

openssl s_client-connect v:4443 -msg –state -ssl2


强制使用ssl3协议。

openssl s_client-connect corp.zhc.com:4443 -msg –state -ssl3


SSL的通信过程是这样的:

1 client向server索要并验证公钥。

2 双方协商生成对话密钥

3 开始用对话密钥进行加密通信。

前两步就是SSL握手,SSL握手是在TCP三次握手之后开始的,SSL握手是四次,握手时序是:

client  ->  server  CLIENT_HELLO (supported protocol version, TLS1.0, a random number R1, supported cipher, compression suites)


client <-   server SERVER_HELLO (the protocol version TLS1.0, a random number R2, the cipher)

client <-   server SERVER_CERTIFICATE

client <-   server SERVER_KEY_EXCHANGE

client <-   server CERTIFICATE_REQUEST (optional, 向客户端索要证书,进行双向认证)

client <-   server SERVER_HELLO_DONE


client  ->  server  CLIENT_CERTIFICATE (optional, 如果server端索要的话)
client  ->  server  CERTIFICATE_VERIFY
client  ->  server  CLIENT_KEY_EXCHANGE 
client  ->  server  CHANGE_CIPHER_SPEC (在生成一个随机数R3,然后用服务器公钥进行加密变成pre-master-key))
client  ->  server  FINISHED

client <- server  CLIENT_CERTIFICATE (optional, 如果server端索要的话)
client <-  server  CERTIFICATE_VERIFY
client <-  server  CLIENT_KEY_EXCHANGE (用私钥将pre-master-key解密出来得到R3)
client <-  server  CHANGE_CIPHER_SPEC (确认用会话密钥进行通信)
client <-  server  FINISHED

会话密钥是根据三个随机数(R1,R2,R3)根据协商好的加密算法算出来的。这个会话密钥是对称密钥,供接下来的通信使用。

原文:http://blog.csdn.net/hongchangfirst/article/details/78282746

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst




原创粉丝点击