使用OpenSSL 與cURL 檢查網站伺服器支援哪幾種Cipher Suites

文章推薦指數: 80 %
投票人數:10人

本篇文章將分享如何透過OpenSSL 查詢有哪些Cipher Suites 可用,並示範 ... No ALPN negotiated Early data was not sent Verify return code: 0 (ok). ←如何透過PowerShell快速建立Windows內建VPN連線並自動記憶密碼連線 如何使用Certbot建立免費的TLS/SSL網域憑證並自動產生PFX憑證→ 當我們從用戶端透過TLS協定連接伺服器時,用戶端會準備一組CipherSuites清單給伺服器端,伺服器端必須選用一個強度最高的Cipher加密演算法回應,之後才會進行金鑰交換,並開始使用加密連線,確保網路安全。

本篇文章將分享如何透過OpenSSL查詢有哪些CipherSuites可用,並示範如何透過cURL指定特定Cipher進行連線與檢查伺服器是否支援特定CipherSuite加密演算法清單。

使用OpenSSL查詢有哪些Ciphers可用 首先,你要先能夠區分CipherSuite與Cipher的差別: Cipher(加密演算法) 一種負責將明文(Plaintext)透過一系列數學運算,達到將訊息加密為密文(Ciphertext);或將密文訊息解密為明文的演算法(algorithm)。

opensslciphers-stdname CipherSuite(加密演算法清單) 代表一系列可用的Cipher(加密演算法)清單。

目前從CipherSuiteInfo網站可以發現339個在IANA(InternetAssignedNumbersAuthority)登記立案的標準名稱。

我們以TLS_DHE_DSS_WITH_AES_128_GCM_SHA256為例,上面會顯示IANAname(標準名稱)、OpenSSLname與TLSVersion可供參考。

參考資料:MappingOpenSSLciphersuitenamestoIANAnames 你可以用以下命令查詢目前的OpenSSL支援哪些標準名稱(不會所有都支援): opensslciphers opensslciphers-stdname opensslciphers-v opensslciphers-V 上述4個命令輸出的內容都差不多,第一個只會顯示OpenSSLname而已,使用-stdname會額外顯示IANAname(標準名稱),用-v會顯示OpenSSLname與相關屬性,而-V則會額外顯示ciphersuite的Hexcode內容。

要用哪個參數,全看你想寫自動化的腳本而定。

如果想查詢OpenSSL目前支援的CipherSuite可以用以下命令篩選出來: opensslciphers-s opensslciphers-s-psk opensslciphers-s-srp 預設PSK與SRP這兩類Ciphers是停用的,需要加上-psk或-srp才能看到。

當你知道有多少CipherSuite可用之後,我們就可以來設法讀懂CipherSuite的結構。

以下我們以TLS_AES_256_GCM_SHA384為例: TLS 要使用CipherSuite的加密協定,網站通常是TLS為主。

AES 要使用的一種訊息加解密的演算法(sessioncipher) 256 加密演算法採用的加密金鑰長度(sessionencryptionkeysizeforcipher)(bits) GCM 一種加密的類型(typeofencryption)(cipher-blockdependencyandadditionaloptions) SHA384 選用的雜湊演算法(hashfunction) 使用OpenSSL查詢網站伺服器的所有憑證與TLS連接資訊 以下是一段非常實用的OpenSSL命令,他不但可以查出伺服器目前所使用的完整憑證資訊,也可以看出整個TLS交握的完整過程! OpenSSL預設會使用TLS1.3(最新版)進行連線 openssls_client-connectwww.yahoo.com:443 我們可以跳過憑證的內容,直接顯示New,TLSv1.3,CipherisTLS_AES_128_GCM_SHA256這段內容,得知本次連線使用的CipherSuite: New,TLSv1.3,CipherisTLS_AES_128_GCM_SHA256 Serverpublickeyis256bit SecureRenegotiationISNOTsupported Compression:NONE Expansion:NONE NoALPNnegotiated Earlydatawasnotsent Verifyreturncode:0(ok) 你也可以指定TLS1.2進行加密連線 openssls_client-connectwww.yahoo.com:443-tls1_2 New,TLSv1.2,CipherisECDHE-ECDSA-AES128-GCM-SHA256 Serverpublickeyis256bit SecureRenegotiationISsupported Compression:NONE Expansion:NONE NoALPNnegotiated SSL-Session: Protocol:TLSv1.2 Cipher:ECDHE-ECDSA-AES128-GCM-SHA256 Session-ID:72CB003E38A8CFC8F9085AFDB1AF26E6F6E11BF44CE7D0074B774E478D876E6F Session-ID-ctx: Master-Key:A3DA1FB3E11FDAC50929F2D30339BB0F82094B7B503D5E8B018B844F169E7E479B0E11465F16F85E7CD1827A4642D5DB PSKidentity:None PSKidentityhint:None SRPusername:None TLSsessionticketlifetimehint:7200(seconds) TLSsessionticket: 0000-078ff3faa9327f7f-eb7807822c8d3249.....2...x..,.2I 0010-95ee44c79707e6f9-96ba6097140a9bdf..D.......`..... 0020-052cf77717bf75b7-0dd7d82045326790.,.w..u....E2g. 0030-251d2d78f80d732b-5592bc81103fd029%.-x..s+U....?.) 0040-143b539b846fa837-ca675bb8551ee604.;S..o.7.g[.U... 0050-55854c9db9417cb3-d8df549ff4857289U.L..A|...T...r. 0060-a7d6f3ca49791531-f94ffd2ad1c90d0d....Iy.1.O.*.... 0070-dec4ede308b50073-621d4be1eb71de83.......sb.K..q.. 0080-133473929b3d3592-01481c65691f768c.4s..=5..H.ei.v. 0090-3faf071ac84e7064-42a524d05a06af1d?....NpdB.$.Z... 00a0-893cfff0e2e14af4-ffe62fe483dbf694.<....j... starttime:1620800451 timeout:7200 verifyreturncode:0 extendedmastersecret:yes curl-s-s-v-o capath: tlsv1.3 supported_ciphers="$(opensslciphers-s-tls1_3)" ifs=":" read-r-asupported_ciphers forcin do printf-vpad cipher="$c$pad" printf curl-s-s-o if echook fi done tlsv1.2 openssl sslciphers-curl ciphersuiteinfo howtoconvertsslcipherstocurlformat curl-howtouse openssl-ciphers sslservertest windows8 .net .netcore accessibility angular angularjs asp.net asp.net5 asp.netblazor asp.netcore asp.netidentity asp.netmvc asp.netwebapi azuredevops c cloudcomputing css devops docker entityframework git golang html5 iis java javascript jenkins kubernetes linq linux microsoftazure mysql office office365 oracle php scrum security sqlserver subversion systemcenter tfs tfs2010 tips unittesting usability vba visualbasic visualstudio visualstudio11 visualstudio2012 visualstudio2013 vs2010tips web webmatrix windows windowsazure windowsphone7>



請為這篇文章評分?