为什么我的 openssl 连接因椭圆曲线密码 ECDH-RSA-AES128-SHA 而失败?

信息安全 openssl 密码选择 ubuntu
2021-09-10 14:27:28

我在 ubuntu 14.10 pc 中使用具有特定密码的 openssl 示例服务器和客户端。openssl 版本是 1.0.1。

当我在双方都使用 RC4-SHA 密码时,连接建立成功。但是,当我使用 ECDH-RSA-AES128-SHA 或其他椭圆曲线密码时,会出现以下错误:

3074328252:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:762:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 163 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE

发生这种情况有什么具体原因吗?

谢谢!

1个回答

那是因为您正在尝试使用ECDH密码套件,而不是ECDHE密码套件。

  • ECDHE-RSA:服务器的证书包含一个 RSA 公钥;服务器即时生成一个新的椭圆曲线 Diffie-Hellman 密钥对,并对服务器发送给客户端的公共部分进行签名。
  • ECDH-RSA:服务器的证书已经包含椭圆曲线 Diffie-Hellman 公钥;它不是即时生成的;颁发(签名)服务器证书的证书颁发机构使用 RSA。

由于您的服务器证书包含 RSA 密钥,因此您不能使用任何“ECDH”密码套件,只能使用“ECHDE”密码套件。(这很好!ECDHE 密码套件实际上提供了Forward Secrecy,这是一件好事,而 ECDH 密码套件不这样做。)