SSL/TLSプロトコルを理解しようとしていますが、特定の点で迷っています。
公開サーバーキー(「EC 256ビット」または「RSA 2048ビット」など)と暗号スイートの間のリンクは何ですか?
この投稿は答えを出します: SSL証明書と暗号スイートの対応 しかし、 https://www.wikipedia.org の暗号スイートを分析しようとすると、何か非論理的なことがあります私。 wikipedia.orgにはEC 256ビットの鍵があり、TLS_RSA_WITH_AES_128_CBC_SHAは承認された暗号スイートです。この投稿によると SSL証明書と暗号スイートの対応 (私が正しく理解していれば)それは不可能であるべきです。
"TLS_RSA_ *暗号スイートの場合、キー交換では、クライアントが選択したランダム値の暗号化をサーバーのRSA公開鍵で使用するため、サーバーの公開鍵のタイプはRSAであり、暗号化に適している必要があります(サーバーの証明書には、 「署名のみ」というキー使用法の拡張機能。」
では、なぜウィキペディアでTLS_RSA_WITH_AES_128_CBC_SHAを使用できるのでしょうか。
wikipedia.orgにはEC 256ビットの鍵があり、TLS_RSA_WITH_AES_128_CBC_SHAは承認された暗号スイートです。この投稿によると、SSL証明書と暗号スイートの対応(正しく理解していれば)は不可能です。
実際、wikipedia.orgにはECDSAとRSAの両方の証明書があり、クライアントが提供する暗号に応じてこれらを使用します。クライアントがECDSA暗号をサポートする場合、EC256証明書を取得します。
$ openssl s_client -connect www.wikipedia.org:443 -cipher 'ECDSA' |\
openssl x509 -text -noout
...
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
代わりに、RSA認証で暗号を適用している場合は、RSA 2048キーを使用する別の証明書を取得します。
$ openssl s_client -connect www.wikipedia.org:443 -cipher 'RSA' |\
openssl x509 -text -noout
...
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
ECDSAは同じセキュリティでより優れたパフォーマンスを提供しますが、すべてのクライアントがまだECDSAをサポートしているわけではないため、このようなセットアップは珍しくありません。デュアル証明書を使用したセットアップは、すべてのWebサーバーでサポートされているわけではありませんが、 nginx や Apache などの広く使用されているサーバーでサポートされています。
TLS_RSA_WITH_AES_128_CBC_SHA
ciphersuiteは、認証と鍵交換の両方にRSAを使用します。キーの長さは指定されていませんが、現在の標準は2048ビットのRSAキーなので、この場合に使用される可能性が高いです。
他の暗号スイートについては、鍵交換アルゴリズムと認証アルゴリズムを区別するコンポーネントが表示される場合があります。 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
はこの例です。この場合、ECDHE(楕円曲線差分ヘルマンエフェメラル)は鍵交換アルゴリズムですが、証明書の鍵は楕円曲線デジタル署名アルゴリズム用です。
したがって、TLSセッションに使用されている暗号スイートがTLS_RSA_WITH_AES_128_CBC_SHA
、これはECDSA証明書ではなく、RSA証明書用でした。その場合は、別の暗号スイートを使用する必要がありました。
コメントが長すぎるので、ここに投稿してください。
私はこれをやっただけなので、あなたが何を言っているのかわかりません:
$ openssl s_client -connect www.wikipedia.org:443
--- │ SSL handshake has read 3278 bytes and written 441 bytes
│[12]で:(1072759 + 626961)* 8
---│
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES128-GCM-SHA256
│Out[12]:13597760サーバーの公開鍵は256ビットです
│安全な再交渉ISサポート
│[13]の場合:marathon_testからの圧縮:なし
│marathon_test展開:なし
│ALPN交渉なし
│[13]内:SSLセッション:
│
サーバーが互換性をさまざまなプロトコル(強調表示するRSAなど)にアドバタイズする可能性があることに注意してください。合意されたプロトコルは、クライアントとサーバーの両方がサポートするいくつかのプロトコルの1つです。