ECDH-ECDSA-AES128-SHA256 和 ECDHE-ECDSA-AES128-SHA256 之间的区别?

G.y*_*ang 3 ssl openssl ssl-certificate tls1.2

我正在使用 ECC 证书来观察 TLS 的工作原理\xef\xbc\x8c有人可以帮助我区分 和 之间的区别ECDH-ECDSA-AES128-SHA256ECDHE-ECDSA-AES128-SHA256

\n\n

使用时ECDHE-ECDSA-AES128-SHA256,客户端和服务器端工作正常。

\n\n
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES128-SHA256\nServer public key is 256 bit\nSecure Renegotiation IS supported\nCompression: NONE\nExpansion: NONE\nNo ALPN negotiated\nSSL-Session:\n    Protocol  : TLSv1.2\n    Cipher    : ECDHE-ECDSA-AES128-SHA256\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用时出现ECDH-ECDSA-AES128-SHA256故障SERVER_HELLO

\n\n
140344027961248:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:769:\n
Run Code Online (Sandbox Code Playgroud)\n

Sha*_*ell 7

区别在于密钥交换算法。

静态模式下的 ECDH 使用长期 ECDH 密钥。

在临时模式下,每次都会生成一个 ECDH 密钥对,然后将其丢弃,因此仅与 ECDH 密钥交换的长度一起使用。

更新:

服务器拒绝 ECDH 版本,因为它已配置为这样做。

所有 SSL 实现都允许用户设置允许或不允许的密码。在 openssl 中,我们有一个像SSL_CTX_set_cipher_list这样的 API来设置允许或不允许的密码。这通常通过应用程序特定的配置来公开。

有很多像这样的网站提供了有关如何设置密码列表的建议,这为当前情况提供了最佳的安全性。

有关密码字符串的信息,请参阅 openssl ciphers命令。