2013-07-19 155 views
37

如何調試ssl握手,最好使用curl?調試SSL握手

我想解決與客戶端證書每個目錄身份驗證。我特別想找出服務器發送哪些可接受的客戶端證書。

在此先感謝

回答

2

捲曲可能確實有顯示更多的信息,但這樣的事情的一些選項我總是用openssl s_client

隨着-debug選項這給了很多有用的信息

也許我應該補充一點,這也適用於非HTTP連接。所以如果你正在做「https」,請嘗試下面建議的curl命令。

openssl s_client -connect www.test.com:443 -prexit 

輸出可能會包含「允許使用的客戶端證書CA名稱」和:如果你是不是還是希望

+1

需要注意的是,如果你的捲曲的版本是針對不同的SSL庫編譯如的GnuTLS(而不是OpenSSL的 - 檢查使用'捲曲-V'),那麼你應該嘗試調試與使用了SSL庫二進制的連接而是例如 GNUTLS-CLI-V www.google.com 443 –

37

我已經使用這個命令來解決客戶端證書協商第二個選項openssl s_client可能是很好的如果服務器並不總是要求客戶端證書,則可能是服務器的CA證書列表,或者可能是「沒有客戶端證書CA名稱已發送」。

+0

顯然「的OpenSSL的s_client.First ..」只檢查證書鏈,而不是在HTTP請求本身的名稱。我與OpenSSL的喜歡一些證書掙扎,但捲曲不.. – radiospiel

+0

我結合以上'-showcerts'和它的工作就像一個魅力 - 謝謝! – Techmag

14
curl -iv https://your.domain.io 

如果您不想使用openssl命令,那麼將會爲您提供證書和頭部輸出。