web-dev-qa-db-ja.com

openssl接続が楕円曲線暗号ECDH-RSA-AES128-SHAで失敗するのはなぜですか?

私は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

これが発生する特定の理由はありますか?

ありがとう!

5
Dimitra

[〜#〜] ecdh [〜#〜]ではなく[〜#〜] ecdhe [〜#〜]ではなく暗号スイートを使用しようとしているためです暗号スイート。

  • ECDHE-RSA:サーバーの証明書にはRSA公開鍵が含まれています。サーバーは、新しい楕円曲線のDiffie-Hellman鍵ペアをオンザフライで生成し、サーバーがクライアントに送信する公開部分に署名します。
  • ECDH-RSA:サーバーの証明書には、楕円曲線のDiffie-Hellman公開鍵がすでに含まれています。オンザフライで生成されません。サーバーの証明書を発行(署名)したCertificate AuthorityはRSAを使用しました。

サーバーの証明書にはRSA鍵が含まれているため、「ECDH」暗号スイートは使用できず、「ECHDE」暗号スイートのみを使用できます。 (そして、それは問題ありません!ECDHE暗号スイートは実際に Forward Secrecy を提供します。これは良いことであり、ECDH暗号スイートはそれを行いません。)

9
Tom Leek