我正在编写一个程序,使用OpenSSL通过DTLS与客户端和服务器的RSA证书进行通信,并使用X509_sign(cert, private_key, EVP_get_digestbyname("SHA384"))
签名。
当我没有限制OpenSSL选择密码时,它会自动选择ECDHE-RSA-AES256-GCM-SHA384
来保护连接(这是握手后SSL_get_cipher_list()
返回的内容)。
在行动中,我认为这个密码是一个非常好的选择。它使用前向安全性和最新密码。这就是为什么我要确保始终通过调用选择此密码
assert(SSL_CTX_set_cipher_list(ctx, "ECDHE-RSA-AES256-GCM-SHA384") == 1);
一开始。 但是,当我这样做时,握手失败并带有
140737353926512:error:140F80B5:SSL routines:DTLS1_CLIENT_HELLO:no ciphers available:d1_clnt.c:851:
对我来说,这种行为有点悖论:如果我让OpenSSL自由选择密码,它会选择ECDHE-RSA-AES256-GCM-SHA384,但我强制它使用它拒绝。 像青少年一样。
你们其中一个人是否知道这里有什么问题?