DotNet SSL TLS证书问题分析排障
問題說明
前幾天運維同事反饋開發(fā)同事代碼在Windows 2008 R2 Datacenter服務(wù)器上跑會出現(xiàn)無法正常建立SSL/TLS連接的情況,在自己的電腦上跑是OK的,代碼也沒有變動過。于是我問他改了服務(wù)器上什么配置沒有,他說改了注冊表也不行。接過這個坑,心里有一萬條艸,沒事改注冊表,這還能夠回滾嗎?這坑還可以越得過去嗎?連忙問了一下,改注冊表有記錄嗎?他說還在服務(wù)器桌面上,松了一口氣,還可以回滾。先根據(jù)對應(yīng)注冊表修改文件改回了注冊表配置,重啟服務(wù)器。
再通過DotNet Framework代碼測試接口出現(xiàn)以下錯誤:
| 1 2 3 4 5 | 時間:2020-03-23 12:07:44 執(zhí)行開始。。。 時間:2020-03-23 12:07:44 接口出現(xiàn)異常WebException: Response報文:請求被中止: 未能創(chuàng)建 SSL/TLS 安全通道。 時間:2020-03-23 12:07:44 執(zhí)行結(jié)束。。。 時間:2020-03-23 12:07:44 總耗時:428毫秒 |
排查錯誤
于是寫了一個Python腳本測試了一把是正常的,又通過Chrome瀏覽器訪問接口也可以正常響應(yīng),但使用DotNet Framework寫的代碼就是不行。于是Google了一下,希望能夠盡快解決問題,回復(fù)基本上都是修改DotNet代碼,添加對于4.0對TLS1.2的支持,還有就是改注冊表,開啟TLS1.2的支持。前者我覺得是有可能的,根據(jù)微軟官方信息顯示DotNet Framework 4.0需要手動配置TLS1.2的支持才能夠響應(yīng)TLS1.2。
于是加了以下代碼:
| 1 | ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 |(SecurityProtocolType)768 | (SecurityProtocolType)3072; |
測試OK,OK問題解決了?找了另一臺服務(wù)器一測試,還是不行。怎么可能一臺服務(wù)器可以,另一臺不行了?沒有道理啊。本以為這個問題就這么簡單就解決了,但實際結(jié)果并非如此,查看日志還是一樣的報錯Response報文:請求被中止: 未能創(chuàng)建 SSL/TLS 安全通道。。看來只能夠通過抓包解決問題了,于是分別在行與不行的服務(wù)器上安裝了Wireshark,進行抓包分析。
先在正常服務(wù)器上抓包,從下圖可以看到,是很正常的。
問題說明
前幾天運維同事反饋開發(fā)同事代碼在Windows 2008 R2 Datacenter服務(wù)器上跑會出現(xiàn)無法正常建立SSL/TLS連接的情況,在自己的電腦上跑是OK的,代碼也沒有變動過。于是我問他改了服務(wù)器上什么配置沒有,他說改了注冊表也不行。接過這個坑,心里有一萬條艸,沒事改注冊表,這還能夠回滾嗎?這坑還可以越得過去嗎?連忙問了一下,改注冊表有記錄嗎?他說還在服務(wù)器桌面上,松了一口氣,還可以回滾。先根據(jù)對應(yīng)注冊表修改文件改回了注冊表配置,重啟服務(wù)器。
再通過DotNet Framework代碼測試接口出現(xiàn)以下錯誤:
| 1 2 3 4 5 | 時間:2020-03-23 12:07:44 執(zhí)行開始。。。 時間:2020-03-23 12:07:44 接口出現(xiàn)異常WebException: Response報文:請求被中止: 未能創(chuàng)建 SSL/TLS 安全通道。 時間:2020-03-23 12:07:44 執(zhí)行結(jié)束。。。 時間:2020-03-23 12:07:44 總耗時:428毫秒 |
排查錯誤
于是寫了一個Python腳本測試了一把是正常的,又通過Chrome瀏覽器訪問接口也可以正常響應(yīng),但使用DotNet Framework寫的代碼就是不行。于是Google了一下,希望能夠盡快解決問題,回復(fù)基本上都是修改DotNet代碼,添加對于4.0對TLS1.2的支持,還有就是改注冊表,開啟TLS1.2的支持。前者我覺得是有可能的,根據(jù)微軟官方信息顯示DotNet Framework 4.0需要手動配置TLS1.2的支持才能夠響應(yīng)TLS1.2。
于是加了以下代碼:
| 1 | ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 |(SecurityProtocolType)768 | (SecurityProtocolType)3072; |
測試OK,OK問題解決了?找了另一臺服務(wù)器一測試,還是不行。怎么可能一臺服務(wù)器可以,另一臺不行了?沒有道理啊。本以為這個問題就這么簡單就解決了,但實際結(jié)果并非如此,查看日志還是一樣的報錯Response報文:請求被中止: 未能創(chuàng)建 SSL/TLS 安全通道。。看來只能夠通過抓包解決問題了,于是分別在行與不行的服務(wù)器上安裝了Wireshark,進行抓包分析。
先在正常服務(wù)器上抓包,從下圖可以看到,是很正常的。
而在非正常的服務(wù)器上抓包,報錯(因為在測試過程中,沒有保存抓包數(shù)據(jù),只記錄了報錯關(guān)鍵字):
| 1 | Level: Fatal, Description: HandShake Failure |
一般來說,這種錯誤是因為加密套件不匹配造成的,所以開始比較兩臺服務(wù)器之間加密套件的區(qū)別。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #因為沒有截圖保存,只導出了Cipher Suites進行比較,發(fā)現(xiàn)正常的服務(wù)器支持28種Cipher Suites,而非正常的服務(wù)器只支持21種Cipher Suites,相差7種Cipher Suites。 #非正常服務(wù)器 Cipher Suites (21 suites)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004) #正常服務(wù)器 Cipher Suites (28 suites)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004) |
再仔細查看了一下正常響應(yīng)的服務(wù)器,在發(fā)送Server Hello時使用的加密套件(Cipher Suite)是:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
而非正常的服務(wù)器響應(yīng)的是:TLS 1.2 Alert(Level: Fatal, Description:Handshake failure),從這里就可以很清楚的看到原因了,是因為客戶端不支持Cipher Suite:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384造成的,所以HTTPS請求連接建立才會失敗。
解決問題
找到問題,解決問題就簡單了,Windows IIS Cipher Suites問題,我們可以通過IIS Crypto工具進行解決。下載工具IIS Crypto,然后查看當前服務(wù)器的加密套件:
我們會發(fā)現(xiàn)在這里面并沒有證書支持的加密套件,于是我手動添加了證書所支持的加密套件,重啟服務(wù)器。
再請求對接接口,現(xiàn)在可以正常獲取數(shù)據(jù)了。
| 1 2 3 4 5 6 7 8 9 | 時間:2020-03-23 14:55:30 執(zhí)行開始。。。 時間:2020-03-23 14:55:45 {"current_page": 1,"data": [{"id": xxx,"PID": "xxxx","totalCount": "0"}, |
正常響應(yīng)抓包:
擴展思考
怎么知道對應(yīng)證書支持哪些加密套件了?
我們可以通過這個工具的Site Scanner,輸入對應(yīng)URL,然后Scan,這時候會打開ssllabs,進行網(wǎng)站證書檢測,我們可以拉到最后面,有一個Cipher Suites就可以看到對應(yīng)的TLS 1.2加密套件支持。
這里我們可以看到此證書是支持5種加密套件的,而我們的服務(wù)器完美的錯過了這5種加密套件,但也并非所有的服務(wù)器都錯過了,所以出現(xiàn)有些服務(wù)器可以正常訪問接口,有些服務(wù)器不正常。
還有一種方法,就是我們通過Chrome,按F12,選擇Security,也可以查看到對應(yīng)的安全連接設(shè)置。
或者通過nmap命令查看:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ~ ? nmap -p 443 --script ssl-enum-ciphers www.oubayun.com Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-23 17:23 CST Nmap scan report for www.oubayun.com (xxx.xxx.xxx.xxx) Host is up (0.065s latency).PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.2: | ciphers: | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) A | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) A | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) A | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) A | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (secp256r1) A | compressors: | NULL | cipher preference: client | warnings: | Key exchange (dh 2048) of lower strength than certificate key | Key exchange (secp256r1) of lower strength than certificate key |_ least strength: ANmap done: 1 IP address (1 host up) scanned in 18.84 seconds |
另外還可以通過sslScan命令查看其它推薦的加密套件。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | b~ ? sslscan www.oubayun.com Version: 1.11.13-static OpenSSL 1.0.2f 28 Jan 2016Connected to xxx.xxx.xxx.xxxTesting SSL server www.oubayun.com on port 443 using SNI name www.oubayun.comTLS Fallback SCSV: Server supports TLS Fallback SCSVTLS renegotiation: Session renegotiation not supportedTLS Compression: Compression disabledHeartbleed: TLS 1.2 not vulnerable to heartbleed TLS 1.1 not vulnerable to heartbleed TLS 1.0 not vulnerable to heartbleedSupported Server Cipher(s): #這里我們可以看到首選的是: ECDHE-RSA-AES256-GCM-SHA384 Preferred TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve P-256 DHE 256 Accepted TLSv1.2 256 bits DHE-RSA-AES256-GCM-SHA384 DHE 2048 bits Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve P-256 DHE 256 Accepted TLSv1.2 128 bits DHE-RSA-AES128-GCM-SHA256 DHE 2048 bitsSSL Certificate: Signature Algorithm: sha256WithRSAEncryption RSA Key Strength: 4096Subject: www.oubayun.com Altnames: DNS:www.oubayun.com Issuer: Let's Encrypt Authority X3Not valid before: Feb 29 09:35:16 2020 GMT Not valid after: May 29 09:35:16 2020 GMT |
當然查看Cipher Suites的方法不僅僅只有這些,還有很多其它的方法。
怎么開啟TLS 1.2支持?
這是我們也可以通過這個工具,點擊Schannel,然后勾選TLS 1.2,選擇Apply,再重啟服務(wù)器即可。
TLS 1.2支持37種加密套件,但建議使用以下種類:
| 1 2 3 4 | #Nginx設(shè)置 AESGCM+ECDH ARIAGCM+ECDH CHACHA20+ECDH |
而在非正常的服務(wù)器上抓包,報錯(因為在測試過程中,沒有保存抓包數(shù)據(jù),只記錄了報錯關(guān)鍵字):
| 1 | Level: Fatal, Description: HandShake Failure |
一般來說,這種錯誤是因為加密套件不匹配造成的,所以開始比較兩臺服務(wù)器之間加密套件的區(qū)別。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #因為沒有截圖保存,只導出了Cipher Suites進行比較,發(fā)現(xiàn)正常的服務(wù)器支持28種Cipher Suites,而非正常的服務(wù)器只支持21種Cipher Suites,相差7種Cipher Suites。 #非正常服務(wù)器 Cipher Suites (21 suites)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004) #正常服務(wù)器 Cipher Suites (28 suites)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004) |
再仔細查看了一下正常響應(yīng)的服務(wù)器,在發(fā)送Server Hello時使用的加密套件(Cipher Suite)是:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
而非正常的服務(wù)器響應(yīng)的是:TLS 1.2 Alert(Level: Fatal, Description:Handshake failure),從這里就可以很清楚的看到原因了,是因為客戶端不支持Cipher Suite:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384造成的,所以HTTPS請求連接建立才會失敗。
解決問題
找到問題,解決問題就簡單了,Windows IIS Cipher Suites問題,我們可以通過IIS Crypto工具進行解決。下載工具IIS Crypto,然后查看當前服務(wù)器的加密套件:
我們會發(fā)現(xiàn)在這里面并沒有證書支持的加密套件,于是我手動添加了證書所支持的加密套件,重啟服務(wù)器。
再請求對接接口,現(xiàn)在可以正常獲取數(shù)據(jù)了。
| 1 2 3 4 5 6 7 8 9 | 時間:2020-03-23 14:55:30 執(zhí)行開始。。。 時間:2020-03-23 14:55:45 {"current_page": 1,"data": [{"id": xxx,"PID": "xxxx","totalCount": "0"}, |
正常響應(yīng)抓包:
擴展思考
怎么知道對應(yīng)證書支持哪些加密套件了?
我們可以通過這個工具的Site Scanner,輸入對應(yīng)URL,然后Scan,這時候會打開ssllabs,進行網(wǎng)站證書檢測,我們可以拉到最后面,有一個Cipher Suites就可以看到對應(yīng)的TLS 1.2加密套件支持。
這里我們可以看到此證書是支持5種加密套件的,而我們的服務(wù)器完美的錯過了這5種加密套件,但也并非所有的服務(wù)器都錯過了,所以出現(xiàn)有些服務(wù)器可以正常訪問接口,有些服務(wù)器不正常。
還有一種方法,就是我們通過Chrome,按F12,選擇Security,也可以查看到對應(yīng)的安全連接設(shè)置。
或者通過nmap命令查看:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ~ ? nmap -p 443 --script ssl-enum-ciphers www.oubayun.com Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-23 17:23 CST Nmap scan report for www.oubayun.com (xxx.xxx.xxx.xxx) Host is up (0.065s latency).PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.2: | ciphers: | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) A | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) A | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) A | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) A | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (secp256r1) A | compressors: | NULL | cipher preference: client | warnings: | Key exchange (dh 2048) of lower strength than certificate key | Key exchange (secp256r1) of lower strength than certificate key |_ least strength: ANmap done: 1 IP address (1 host up) scanned in 18.84 seconds |
另外還可以通過sslScan命令查看其它推薦的加密套件。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | b~ ? sslscan www.oubayun.com Version: 1.11.13-static OpenSSL 1.0.2f 28 Jan 2016Connected to xxx.xxx.xxx.xxxTesting SSL server www.oubayun.com on port 443 using SNI name www.oubayun.comTLS Fallback SCSV: Server supports TLS Fallback SCSVTLS renegotiation: Session renegotiation not supportedTLS Compression: Compression disabledHeartbleed: TLS 1.2 not vulnerable to heartbleed TLS 1.1 not vulnerable to heartbleed TLS 1.0 not vulnerable to heartbleedSupported Server Cipher(s): #這里我們可以看到首選的是: ECDHE-RSA-AES256-GCM-SHA384 Preferred TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve P-256 DHE 256 Accepted TLSv1.2 256 bits DHE-RSA-AES256-GCM-SHA384 DHE 2048 bits Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve P-256 DHE 256 Accepted TLSv1.2 128 bits DHE-RSA-AES128-GCM-SHA256 DHE 2048 bitsSSL Certificate: Signature Algorithm: sha256WithRSAEncryption RSA Key Strength: 4096Subject: www.oubayun.com Altnames: DNS:www.oubayun.com Issuer: Let's Encrypt Authority X3Not valid before: Feb 29 09:35:16 2020 GMT Not valid after: May 29 09:35:16 2020 GMT |
當然查看Cipher Suites的方法不僅僅只有這些,還有很多其它的方法。
怎么開啟TLS 1.2支持?
這是我們也可以通過這個工具,點擊Schannel,然后勾選TLS 1.2,選擇Apply,再重啟服務(wù)器即可。
TLS 1.2支持37種加密套件,但建議使用以下種類:
| 1 2 3 4 | #Nginx設(shè)置 AESGCM+ECDH ARIAGCM+ECDH CHACHA20+ECDH |
總結(jié)
以上是生活随笔為你收集整理的DotNet SSL TLS证书问题分析排障的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 5.0 Preview 2发布
- 下一篇: 如何让Docker镜像飞起来