Как включить TLS 1.2 на Spring-boot?

Я пытаюсь включить TLS 1.2 на Tomcat на Spring-boot 1.2.1. Android 5.0 не удается подключиться к настройкам SSL по умолчанию, из-за сбоя SSL рукопожатия. Android 4.4, iOS, Firefox и Chrome подключаются к версии по умолчанию. Я думаю, это из-за несоответствия в протоколах TLS, поддерживаемых в Android 5.0 и весенней загрузке tomcat по умолчанию (TLS v1?).

Я думаю, что хочу изменить это приложение.настройка свойств:

server.ssl.protocol=TLS

но у меня нет расположены другие приемлемые строки (или, если они есть, даже). Нет перечисления, которое я могу найти, выполнив поиск по "протоколу" в весна загрузки github. Я пробовал " TLSv1.2", но это, по-видимому, не имеет никакого эффекта.

текущая конфигурация SSL в приложении.свойства:

server.ssl.key-store = chainedcertificates.p12
server.ssl.key-store-password = secret
server.ssl.key-store-type = PKCS12

Как включить TLS 1.2 в весенней загрузке?

Если это имеет значение, я использую Java 1.7. Документация для этого, похоже, указывает, что она должна поддерживать TLS 1.2.

Tomcat 8, похоже, имеет поддержку. Я не уверен, как проверить, какая именно версия работает в spring boot.

2 ответов


TLS 1.2 включен по умолчанию в spring-boot 1.2.1. Это можно проверить, выполнив следующие действия из командной строки

openssl s_client -connect serverAddress:port

выходы

SSL-Session:
Protocol  : TLSv1.2
Cipher    : ECDHE-RSA-AES256-SHA384

Так что моя проблема должна быть чем-то отдельным.


вы можете испытать ошибку рукопожатия SSL из-за Шифров по умолчанию, которые включает spring boot. Рекомендуется определить набор шифров. У нас была аналогичная проблема, и то, как мы ее исправили, было с помощью SSLScan на вызывающем абоненте, а затем сканирование нашей системы, чтобы увидеть, если были какие-либо совпадения. Это привело нас к тому, что не было совпадений и помогло нам определить список шифров, которые мы должны поддерживать.

используя SSLScan это по умолчанию шифры spring boot будут использовать:

Preferred TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA256       Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  DHE-RSA-AES128-GCM-SHA256     DHE 1024 bits
Accepted  TLSv1.2  128 bits  DHE-RSA-AES128-SHA256         DHE 1024 bits
Accepted  TLSv1.2  128 bits  DHE-RSA-AES128-SHA            DHE 1024 bits

чтобы включить TLS 1.2 и определить список шифров, сделайте следующее:

#enable/diable https
server.ssl.enabled=true

#ssl ciphers
server.ssl.ciphers=TLS_RSA_WITH_AES_128_CBC_SHA256, INCLUDE_ANY_OTHER_ONES_YOU_NEED_TO_SUPPORT

# SSL protocol to use.
server.ssl.protocol=TLS

# Enabled SSL protocols.
server.ssl.enabled-protocols=TLSv1.2

для списка шифров вы можете использовать https://testssl.sh/openssl-rfc.mapping.html и https://msdn.microsoft.com/en-us/library/windows/desktop/mt813794(v=vs. 85).aspx