2016-07-11 2 views
3

Я хочу дезактивировать TLSv1.0 с пружинным ботинке (высвобождать 1.3.3), но он не работает, если application.yml, как показано ниже:Как отключить TLSv1.0 с весенней загрузкой и встроенным tomcat?

ssl: protocol: TLSv1.2 key-store: /E:/key/server.jks key-store-password: serverpkcs12

Я все еще можете получить доступ к веб-странице, если выберите только «USE TLS 1.0» в IE. See this pic--not work.

Однако, если не использовать встроенный tomcat и добавить эти аргументы для Connector, расположенного в server.xml, он отлично подходит для меня - веб-страница заблокирована IE. See this pic--worked for me

sslProtocols="TLSv1.2" sslEnabledProtocols="TLSv1.2"

И я также попробовал некоторые параметры виртуальной машины, для exmaple -Dhttps.protocols = "TLSv1.2", все они бесполезны.

Так что я могу сделать для этого?

+0

насчет [ConfigurableEmbeddedServletContainer] (http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/embedded/ConfigurableEmbed dedServletContainer.html)? – bilak

+0

@bilak Спасибо за совет – Walter

ответ

1

Мое решение

@Bean 
public EmbeddedServletContainerFactory servletContainerFactory() 
{ 
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); 

    factory.addConnectorCustomizers(new TomcatConnectorCustomizer() 
    { 
     @Override 
     public void customize(Connector connector) 
     { 
      connector.setAttribute("sslProtocols", "TLSv1.1,TLSv1.2"); 
      connector.setAttribute("sslEnabledProtocols", "TLSv1.1,TLSv1.2"); 
     } 
    }); 

    return factory; 
} 

И удалить протокол: TLSv1.2 из application.yml

3

Путь, который я нашел, чтобы установить шифры, которые поддерживаются только TLSv1.2. Пример: Если вы поставите в application.yml

server.ssl.ciphers:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 

И с помощью CURL

OpenSSL s_client -connect example.com:443 -tls1

Вы увидите, что запрос будет быть проигнорированным/отклоненным, потому что тот шифр, который вы установили в application.yml, будет проверять только запросы TLSv1.2.

0

Наиболее прозрачным и понятным способом является явная настройка действительных протоколов TLS в файле конфигурации приложения, исключая, конечно, нежелательные.

например. в YAML

server.ssl.enabled-protocols=TLSv1.1,TLSv1.2 

Вы можете запустить сервер и проверить, является ли TLSv1.0 работает на peforming следующего

openssl s_client -connect localhost:443 -tls1 

Вышеуказанные соединения должны быть отвергнуты, тогда как следующие два будет принят и распечатать детали сертификата

openssl s_client -connect localhost:443 -tls1_1 
openssl s_client -connect localhost:443 -tls1_2 
Смежные вопросы