web-dev-qa-db-ja.com

TomcatにTLS_ECDHE_ECDSA _...暗号を提供させることができません

私のTomcat(7.0.52)コネクタは、暗号のような暗号リストで構成されている= "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"

これらはすべて、サーバーにインストールされているopenjdk1.7でサポートされています(検証済み)。

キーストアは、を使用してkeytoolで初期化されます

    keytool -genkey -alias Tomcat -keyalg RSA -sigalg SHA256withRSA -keysize 2048 ... 

Sslハンドシェイクデバッグ出力では、クライアントがこれらの暗号を提供していることがわかりますが、サーバーはTLS_ECDHE_RSA_WITH_AES_128_CBC_SHAのみを選択しますが、これは最強ではありません。

ClientHello, TLSv1.2Jul 04, 2014 2:38:31 PM org.Apache.coyote.AbstractProtocol start
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,...
Extension elliptic_curves, curve names: {secp256r1, secp384r1, secp521r1}
Extension ec_point_formats, formats: [uncompressed]
Unsupported extension type_35, data:
Unsupported extension type_13172, data:
Extension signature_algorithms, signature_algorithms: SHA256withRSA, SHA384withRSA, SHA1withRSA, SHA256withECDSA, SHA384withECDSA, SHA1withECDSA, Unknown (hash:0x4, signature:0x2), SHA1withDSA
***
Jul 04, 2014 2:38:31 PM org.Apache.catalina.startup.Catalina start
%% Initialized:  [Session-1, SSL_NULL_WITH_NULL_NULL]
matching alias: Tomcat
% Negotiating:  [Session-1, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA]

Tomcatの暗号リストからTLS_ECDHE_RSA_WITH_AES_128_CBC_SHAを削除すると、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHAが使用されます。両方のTLS_ECDHE_RSA_WITH_AES_xxxを削除すると、ハンドシェイクに失敗します(共通の暗号はありません)。

構成に何が欠けているのか、何が悪いのか理解できません。

どんな入力でも大歓迎です...

1
tonioc

暗号は優先順にリストする必要があります。

しかし、あなたはTLS_ECDHE_RSA_WITH_AES_128_CBC_SHAの前にTLS_ECDHE_RSA_WITH_AES_256_CBC_SHAをリストしました。

リスト内の順序を逆にしてみてください。

リスト全体を並べ替えて、すべての256ビット暗号がすべての128ビット暗号の前に表示されるようにすることもできます。

また、SSLHonorCipherOrder="true"<Connector>を設定する必要があります。

2
Michael Hampton