Назад | Перейти на главную страницу

не могу заставить tomcat предлагать TLS_ECDHE_ECDSA_… шифры

мой кот (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]

Если я удалю TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA из списка шифров Tomcat, будет использоваться TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA. Если я удалю оба TLS_ECDHE_RSA_WITH_AES_xxx, я получу сбой рукопожатия (общих шифров нет).

Не могу понять, чего не хватает в конфигурации, а чего нет.

Любой вклад очень ценится ...

Ваши шифры должны быть перечислены в порядке предпочтения.

Но вы перечислили TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA перед TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA.

Попробуйте изменить их порядок в списке.

Вы также можете изменить порядок всего списка так, чтобы все 256-битные шифры появлялись перед всеми 128-битными шифрами.

Вам также необходимо иметь SSLHonorCipherOrder="true" установить в вашем <Connector>.