2016-07-11 2 views
3

Ich möchte TLSv1.0 mit Federverschluß (Release 1.3.3) deaktivieren, aber es, wenn application.yml wie unten funktioniert nicht:Wie kann ich TLSv1.0 mit Spring Boot und integriertem Tomcat deaktivieren?

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

Ich kann immer noch Web-Seite zugreifen, wenn Wählen Sie nur "USE TLS 1.0" in IE. See this pic--not work.

Wenn jedoch keine eingebetteten tomcat verwenden, und diese Argumente für Connector in server.xml befindet sich hinzufügen, es funktioniert gut für mich - Web-Seite von IE blockiert. See this pic--worked for me

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

Und ich habe auch versucht, einige Argumente VM, für exmaple -Dhttps.protocols = "TLSv1.2", alle von ihnen sind nutzlos.

Was kann ich also tun?

+0

was [ConfigurableEmbeddedServletContainer] (http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/embedded/ConfigurableEmbed dedServletContainer.html)? – bilak

+0

@bilak Danke für den Rat – Walter

Antwort

1

Meine Lösung ist

@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; 
} 

Und entfernen Protokoll: TLSv1.2 von application.yml

3

Eine Art und Weise, die ich Chiffren zu setzen gefunden ist, die nur von TLSv1.2 unterstützt werden. Ex: Wenn Sie in 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 

Und die mit CURL

openssl s_client -connect example.com:443 -tls1

Sie diesen Antrag werden sehen, setzen wird wird ignoriert/abgelehnt werden, da diese Chiffre, die Sie in application.yml festgelegt haben, nur TLSv1.2-Anfragen validiert.

0

Die transparenteste und lesbarste Möglichkeit besteht darin, die gültigen TLS-Protokolle in Ihrer Anwendungskonfigurationsdatei explizit zu konfigurieren, indem natürlich die unerwünschten ausgeschlossen werden.

z.B. in YAML

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

können Sie dann Ihren Server starten und prüfen, ob TLSv1.0 von peforming die folgende

openssl s_client -connect localhost:443 -tls1 

Die oben genannten Verbindungen während der folgenden zwei abgelehnt werden sollte arbeitet wird das akzeptiert und drucken werden Attest Details

openssl s_client -connect localhost:443 -tls1_1 
openssl s_client -connect localhost:443 -tls1_2 
Verwandte Themen