為什麼當我嘗試連線到負載平衡器時,會出現用戶端 SSL/TLS 交涉錯誤?
當我嘗試連線到負載平衡器時,收到 Secure Sockets Layer (SSL)/Transport Layer Security (TLS) 交涉錯誤。為什麼收到此錯誤?
簡短描述
用戶端 TLS 交涉錯誤表示用戶端啟動的 TLS 連線無法與負載平衡器建立工作階段。當用戶端嘗試使用負載平衡器安全政策不支援的通訊協定或密碼連線到負載平衡器時,會發生 TLS 交涉錯誤。若要建立 TLS 連線,請確保您的用戶端支援下列項目:
- 一或多個相符的密碼
- 安全政策中指定的協定
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確定您使用的是最新的 AWS CLI 版本。
識別負載平衡器的安全政策
從 AWS 管理主控台:
1. 開啟 Amazon Elastic Compute Cloud (Amazon EC2) 主控台。
2. 在導覽窗格的負載平衡下,選擇負載平衡器。
3. 選取負載平衡器,然後選擇接聽程式。
4. 檢視安全政策。
對於 Application Load Balancer 和 Network Load Balancer,請在安全政策欄中找到安全政策。
對於 Classic Load Balancer,選擇密碼欄中的變更以檢視安全政策。
從 AWS CLI:
- 對於 Application Load Balancer 和 Network Load Balancer,請執行 describe-listeners 命令
- 對於 Classic Load Balancer,請執行 describe-load-balancers 命令
確定負載平衡器的安全政策支援協定和密碼
Classic Load Balancer 支援自訂安全政策。但是,Application Load Balancer 和 Network Load Balancer 不支援自訂安全政策。如需有關安全政策 (包括預設安全政策) 的詳細資訊,請參閱下列內容:
(選用) 測試負載平衡器的安全政策
若要測試負載平衡器安全政策所支援的協定和密碼,請使用開放原始碼命令列工具,例如 sslscan。
使用 sslscan 命令
您可以在任何 Amazon EC2 Linux 執行個體上或本機系統安裝並執行 sslscan 命令。確保您要測試的負載平衡器接受來源 IP 位址的 TLS 連線。若要在 Amazon Linux EC2 執行個體上使用 sslscan,請執行以下操作:
1. 啟用適用於 Enterprise Linux (EPEL) 的額外套件。
2. 執行 sudo yum install sslscan 命令。
3. 執行下列命令來掃描負載平衡器,以取得支援的密碼。將 example.com 取代為您的網域名稱。
[ec2-user@ ~]$ sslscan --show-ciphers example.com
使用 openssl 命令
或者,您也可以使用 openssl 命令來測試負載平衡器的安全政策。您可以在任何 Amazon EC2 Linux 執行個體上或從本機系統執行 openssl 命令。
若要列出特定 SSL/TLS 版本的支援密碼,請使用 openssl ciphers 命令:
*$* openssl ciphers -v
例如,下列命令會顯示 TLS 版 TLSv1.2 支援的密碼:
*$* openssl ciphers -V | grep "TLSv1.2"
使用 s_client 命令測試 TLS 版本和密碼套件。若要尋找特定密碼套件的強度,您可以使用網站儲存庫,例如 ciphersuites.info。例如,下列命令會顯示 www.example.com 的密碼:
openssl s_client -connect example.com:443
例如,套件 TLS_PSK_WITH_AES_128_CBC_SHA 視為是弱的。如果您對伺服器使用此套件,會收到下列錯誤:
openssl s_client -connect example.com:443 -cipher PSK-AES128-CBC-SHA -quiet 140062732593056:error:140740B5:SSL routines:SSL23_CLIENT_HELLO:no ciphers available:s23_clnt.c:508:
套件 ECDHE-RSA-AES128-GCM-SHA256 視為是強的。如果您對伺服器使用此套件,會收到類似下列內容的成功訊息:
openssl s_client -connect example.com:443 -cipher ECDHE-RSA-AES128-GCM-SHA256 New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES128-GCM-SHA256 Session-ID: 73B49649716645B90D13E29656AEFEBF289A4956301AD9BC65D4832794E282CD Session-ID-ctx: Master-Key: C738D1E7160421281C4CAFEA49941895430168A4028B5D5F6CB6739B58A15235F640A5D740D368A4436CCAFD062B3338 Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None Start Time: 1647375807 Timeout : 300 (sec) Verify return code: 0 (ok)
您也可以使用 openssl 命令指定連線中使用的 TLS 協定版本。下列範例所示為一項測試,用於驗證伺服器是否支援 TLS 1.1:
openssl s_client -connect example.com:443 -tls1_1 -quiet depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2 verify return:1 depth=1 C = US, O = DigiCert Inc, CN = DigiCert Global CA G2 verify return:1 depth=0 CN = *.peg.a2z.com verify return:1
如有必要,更新負載平衡器的安全政策
若要更新負載平衡器的安全政策以使用支援的協定或密碼,並實現所需的安全等級,請執行下列動作:
相關內容
- 已提問 1 年前lg...
- AWS 官方已更新 10 個月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 8 個月前