尝试在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:
当我在Google中查找此错误时,它说该密码从openssl ciphers
报告的列表中丢失。但是,事实并非如此:
# openssl ciphers | sed 's/:/\n/g' | grep TLS_AES_128_GCM_SHA256
TLS_AES_128_GCM_SHA256
此错误不是服务器配置的功能,因为即使我将-connect
IP地址更改为伪造的错误也会打印出来。因此,显然在s_client
甚至没有尝试连接到服务器之前就已经发生了问题。
鉴于该错误消息似乎与openssl ciphers
无关,这意味着什么?
答案 0 :(得分:1)
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
因此,您需要在s_client中使用其他命令行选项才能使用该密码套件:
$ openssl s_client -connect 10.0.0.3:8443 -ciphersuites TLS_AES_128_GCM_SHA256
尽管实际上上述命令将发送默认TLSv1.2密码套件以及上述TLSv1.3密码套件的组合列表。如果仅只需要一个密码套件,则还需要禁用低于TLSv1.3的协议版本:
$ openssl s_client -connect 10.0.0.3:8443 -ciphersuites TLS_AES_128_GCM_SHA256 -tls1_3
但是请注意,您感兴趣的密码套件位于TLSv1.3密码套件的默认集合中,因此,如果您未设置任何其他TLSv1.3密码套件配置,则无论如何它将被发送。
答案 1 :(得分:0)
在握手期间,客户端和服务器协商应使用哪种密码。看起来服务器没有s_client中指定的密码。 从openssl密码手册页中,我看到TLS_AES_128_GCM_SHA256仅在TLS1.3版本中列出,因此您尝试连接的服务器可能仅支持协议到1.2,您可以通过在客户端和服务器之间放置嗅探器来查看握手数据确认实际情况。
答案 2 :(得分:0)
tls-cipher
的{{1}}已更改为tls-ciphersuites
,因此请在配置文件(.ovpn)中更改以下行:
TLS_AES_256_GCM_SHA384
到
tls-cipher TLS_AES_256_GCM_SHA384