如何使用openssl命令列檢視配置支援的協議

2021-03-19 18:21:29 字數 4821 閱讀 5221

1樓:兄弟連教育北京總校

用途:s_client為一個ssl/tls客戶端程式,與s_server對應,它不僅能與s_server進行通訊,也能與任何使用ssl協議的其他服務程式進行通訊。

用法:[cpp] view plain copy

openssl s_client [-host host] [-port port] [-connect host:port] [-verify depth] [-cert filename]

[-certform der|pem] [-key filename] [-keyform der|pem] [-pass arg] [-capath directory] [-cafile filename]

[-reconnect][-pause] [-showcerts] [-debug] [-msg] [-state] [-nbio_test] [-nbio][-crlf] [-ign_eof] [-no_ign_eof]

[-quiet] [-ssl2] [-ssl3] [-tls1_1] [-tls1_2] [-tls1] [-dtls1] [-no_ssl2][-no_ssl3] [-no_tls1] [-no_tls1_1]

[-no_tls1_2] [-bugs] [-cipher cipherlist] [-starttls protocol] [-engine id] [-tl***tdebug] [-no_ticket]

[-sess_out filename] [-sess_in filename] [-rand file(s)]

選項說明:

-host host:設定服務地址。

-port port:設定服務埠,預設為4433。

-connect host:port:設定伺服器地址和埠號。如果沒有設定,則預設為本地主機以及埠號4433。

-verify depth:設定證書的驗證深度。記得ca也是分層次的吧?

如果對方的證書的簽名ca不是root ca,那麼你可以再去驗證給該ca的證書籤名的ca,一直到root ca. 目前的驗證操作即使這條ca鏈上的某一個證書驗證有問題也不會影響對更深層的ca的身份的驗證。所以整個ca鏈上的問題都可以檢查出來。

當然ca的驗證出問題並不會直接造成連線馬上斷開,好的應用程式可以讓你根據驗證結果決定下一步怎麼走。

-cert filename:使用的證書檔案。如果server不要求要證書,這個可以省略。

-certform der|pem:證書的格式,一般為der和pem。預設為pem格式。

-key filename:使用的證書私鑰檔案。

-keyform der|pem:證書私鑰檔案的格式,一般為der和pem。預設為pem格式。

-pass arg:私鑰保護口令**,比如:-pass file:pwd.txt,將私鑰保護口令存放在一個檔案中,通過此選項來指定,不需要使用者來輸入口令。

-capath directory:設定信任ca檔案所在路徑,此路徑中的ca檔名採用特殊的形式:***.

0,其中***為ca證書持有者的雜湊值,它通過x509 -hash命令獲得。

-cafile filename:某檔案,裡面是所有你信任的ca的證書的內容。當你要建立client的證書鏈的時候也需要用到這個檔案。

-reconnect:使用同樣的session-id連線同一個server五次,用來測試server的session緩衝功能是否有問題。

-pause:每當讀寫資料時,sleep 1秒。

-showcerts:顯示整條server的證書的ca的證書鏈。否則只顯示server的證書。

-debug:列印所有的除錯資訊。

-msg:用16進位制顯示所有的協議資料。

-state:列印ssl session的狀態, ssl也是一個協議,當然有狀態。

-nbio_test:檢查非阻塞socket的i/o運**況。

-nbio:使用非阻塞socket。

-crlf:把在終端輸入的換行回車轉化成/r/n送出去。

-ign_eof:當輸入檔案到達檔案尾的時候並不斷開連線。

-no_ign_eof:當輸入檔案到達檔案尾的時候斷開連線。

-quiet:不列印出session和證書的資訊。同時會開啟-ign_eof這個選項。

-ssl2、-ssl3、-tls1_1、-tls1_2、-tls1、-dtls1、-no_ssl2、-no_ssl3、-no_tls1、-no_tls1_1、-no_tls1_2:使用的協議狀態值。

-bugs:相容老版本服務端的中的bug。

-cipher cipherlist:由我們自己來決定選用什麼加密演算法,儘管是由server來決定使用什麼演算法列表,但它一般都會採用我們送過去的cipher列表裡的第一個cipher。

-starttls protocol:protocol可以為**tp或pop3,用於郵件安全傳輸。

-engine id:硬體引擎。

-tl***tdebug:列印tls協議中伺服器端接收到的額外資訊值。

-no_ticket:不支援rfc4507bis會話型別。

-sess_out filename:輸出ssl會話資訊值到filename中。

-sess_in filename:從filename中獲取ssl session值。

-rand file(s):指定隨機數種子檔案,多個檔案間用分隔符分開,windows用「;」,openvms用「,「,其他系統用「:」。

連線選項:

如果一個確認的連線到ssl伺服器,並顯示了從伺服器端接收到了的資料,任何操作都被髮送到伺服器。當互動(這意味著沒有給出b<-quiet> 、b<-ign_eof>這兩個選項)的時候,如果命令列b,被設定則session有可能會被重啟。如果設定的是命令列b或到達了檔案的結尾,連線將會被斷開。

注意:s_client可用於除錯ssl伺服器端。為了連線一個ssl http伺服器,命令如下:

openssl s_client -connect servername:443

一旦和某個ssl server建立連線之後,所有從server得到的資料都會被列印出來,所有你在終端上輸入的東西也會被送給server. 這是人機互動式的。這時候不能設定-quiet和 -ign_eof這倆個選項。

如果輸入的某行開頭字母是r,那麼在這裡session會重啟, 如果輸入的某行開頭是q,那麼連線會被斷開。你完成整個輸入之後連線也會被斷開。

如果連線成功,你可以用http的指令,比如"get /"什麼的去獲得網頁了。

如果握手失敗,原因可能有以下幾種:

1. server需要驗證你的證書,但你沒有證書。

2. 如果肯定不是原因1,那麼就慢慢一個一個set以下幾個選項:-bugs, -ssl2, -ssl3, -tls1,-no_ssl2,-no_ssl3, -no_dtls。

3. 這可能是因為對方的server處理ssl有bug。

有的時候,client會報錯:沒有證書可以使用,或者供選擇的證書列表是空的。這一般是因為server沒有把給你簽名的ca的名字列進它自己認為可以信任的ca列表,你可以用檢查一下server的信任ca列表。

有的http server只在 client給出了一個url之後才驗證client的證書,這中情況下要設定 -prexit這個選項,並且送給server一個頁面請求。

即使使用-cert指明使用的證書,如果server不要求驗證client的證書,那麼該證書也不會被驗證。所以不要以為在命令列里加了-cert 的引數又連線成功就代表你的證書沒有問題。

如果驗證server的證書有問題,就可以設定-showcerts來看看server的證書的ca鏈了。

自從sslv23客戶端hello不能夠包含壓縮方法或擴充套件僅僅會被支援。

bugs:

因為該專案有很多選項,好多用的是老的技術,c**的s_client很難去讀取為什麼會被關閉。一個典型的ssl客戶端專案將會更加簡單的。

如果伺服器驗證失敗,b<-verify>將會退出。

b<-prexit>選項是一個很小的空間。當一個session重啟後,我們必須報告。

linux中怎麼檢視其支援的tls協議版本

2樓:匿名使用者

openssl命令  openssl s_client -connect intl.jdair.***:443 -tls1(-tls1_1  -tls1_2)

網頁查詢的話

國外的連線關於是否支援連結">網頁連結

怎麼看自己伺服器的ssl服務使用的協議版本和加密演算法

3樓:匿名使用者

window 2003:tls1.0 ,證書一般都是:雜湊簽名演算法:sha256 加密位數:2048

windows 2008及更早的版本不支援tls1_2協議。

標準加密條件伺服器作業系統、環境必須達到以下要求:

win 2008 r2 iis 7 以上版本centos 6+ openssl 1.0.1c+apache 2.4 +

nginx 1.0.6+

jdk1.7

tomcat7.0.56+

如何在本地配置openssl

4樓:迪蒙智慧交通

獲取iis證書請求

架設好iis**後,在【目錄安全性】選項卡中點選【伺服器證書】按鈕,【下一步】,【新建證書】,【現在準備證書請求--下一步】,輸入【名稱】,輸入【單位】和【部門】,輸入【公用名稱】,選擇【國家】並輸入【省】和【市縣】並【下一步】,【下一步】,【下一步】,【完成】,iis的證書請求已經獲取,就是c:\certreq.txt。

這裡請牢記輸入的資訊。

命令列輸入介面在哪兒 命令列視窗在哪裡

win r 或者點開始,然後在執行中輸入cmd,回車。在執行中輸入cmd,回車。命令列視窗在 你不是說了嗎,在開始選單中找到執行,在其中中輸入cmd,回車,不就開啟命令列視窗 開始選單 執行,在執行中輸入cmd回車就有了。在電腦終端中輸入命令,是在 輸入啊,怎麼開啟 5 1 在windows10系統...

誰能教我使用windows的命令列模式,還有dos批處理

讓批處理執行完後停留在dos視窗的方法如下 1 假如要後臺執行的批處理命令是test.cmd2 用滑鼠右鍵新建一個文字檔案,然後把副檔名改成.vbs。3 滑鼠右鍵點選這個vbs檔案,在用滑鼠左鍵彈出的選單中選擇編輯4 輸入以下命令 set ws createobject wscript.shell ...

windows命令列不支援被動ftp如何通過寫windows批

可以使用命令列工具curl,它支援被動模式的ftp訪問 修改ftp成標準的伺服器不就解決了.微軟自帶的ftp命令客戶端,不支援pasv模式。雖然你可以使用quote pasv這個命令強制使用pasv模式,但是當你用ls命令列出伺服器目錄列表,你會發現它還是使用port方式來連線伺服器的。可以使用命令...