当试图在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:当我在谷歌上查找这个错误时,它说密码在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无关,它意味着什么?
发布于 2019-07-26 08:46:03
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因此,您需要在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加密套件配置,它还是会被发送。
https://stackoverflow.com/questions/57212182
复制相似问题