1. 程式人生 > >openssl向SSL伺服器傳送請求

openssl向SSL伺服器傳送請求

列印所有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)根據協商好的加密演算法算出來的。這個會話金鑰是對稱金鑰,供接下來的通訊使用。