尝试在中设置密码时出现以下错误openssl s_client:
# openssl s_client -connect 10.0.0.3:8443 -cipher TLS_AES_128_GCM_SHA256
Error with command: "-cipher TLS_AES_128_GCM_SHA256"
140230972122240:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:../ssl/ssl_lib.c:2549:
Run Code Online (Sandbox Code Playgroud)
当我在 Google 中查找此错误时,它表示该密码在 报告的列表中丢失openssl ciphers。然而,这种情况并非如此:
# openssl ciphers | sed 's/:/\n/g' | grep TLS_AES_128_GCM_SHA256
TLS_AES_128_GCM_SHA256
Run Code Online (Sandbox Code Playgroud)
此错误不是服务器配置的功能,因为即使我将-connectIP 地址更改为虚假地址,也会打印该错误。显然,问题s_client甚至在尝试连接到服务器之前就发生了。
鉴于该错误消息似乎与 无关,它意味着什么openssl ciphers?
TLSv1.3 显着改变了密码套件的工作方式。因此,为 TLSv1.2 及以下版本定义的密码套件在 TLSv1.3 中不起作用,反之亦然。出于这个原因,OpenSSL 也在内部单独处理它们,并且它们以不同的方式配置 - 即使“在线”TLSv1.2 和 TLSv1.3 密码套件列表被合并。该openssl ciphers命令报告 TLSv1.2 和 TLSv1.3 密码套件的合并列表。
TLS_AES_128_GCM_SHA256 实际上是一个 TLSv1.3 密码套件:
$ openssl ciphers -v | grep TLS_AES_128_GCM_SHA256
TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
Run Code Online (Sandbox Code Playgroud)
因此,您需要在 s_client 中使用不同的命令行选项来使用该密码套件:
$ openssl s_client -connect 10.0.0.3:8443 -ciphersuites TLS_AES_128_GCM_SHA256
Run Code Online (Sandbox Code Playgroud)
尽管实际上上述命令将发送默认 TLSv1.2 密码套件以及上述 TLSv1.3 密码套件的组合列表。如果您只需要一个密码套件,那么您还需要禁用 TLSv1.3 以下的协议版本:
$ openssl s_client -connect 10.0.0.3:8443 -ciphersuites TLS_AES_128_GCM_SHA256 -tls1_3
Run Code Online (Sandbox Code Playgroud)
但请注意,您感兴趣的密码套件位于默认的 TLSv1.3 密码套件集中,因此,如果您未设置任何其他 TLSv1.3 密码套件配置,它无论如何都会被发送。
| 归档时间: |
|
| 查看次数: |
18254 次 |
| 最近记录: |