it-swarm.com.de

SSL funktioniert nicht für Tomcat 8

Ich versuche SSL (https) für Tomcat 8 zu konfigurieren und habe die folgenden Schritte ausgeführt, aber es funktioniert immer noch nicht

1) Erstellen Sie die Keystore-Datei mit

keytool -genkey -alias myservername -keyalg RSA

2) Generierte CSR wie unten

keytool -certreq -alias myservername -file C:\Tomcat_ssl\local_machine\test.csr -keystore C:\Tomcat_ssl\local_machine\test.keystore

3) Dann hatten wir das Zertifikat generiert und anschließend das Kettenzertifikat und das Zertifikat wie unten importiert

keytool -import -alias root -keystore C:\Tomcat_ssl\local_machine\test.keystore -trustcacerts -file C:\Tomcat_ssl\local_machine\srv_chain.cer

keytool -import -alias myservername -keystore C:\Tomcat_ssl\local_machine\test.keystore -file C:\Tomcat_ssl\local_machine\srv_main.cer

4) Zuletzt haben Sie die Änderungen in der Tomcat server.xml wie folgt vorgenommen

<Connector port="443" protocol="org.Apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="C:\Tomcat_ssl\local_machine\test.keystore" keystorePass="123" keystoreAlias="myservername"/>

Der Tomcat wurde neu gestartet, und er funktioniert nicht mehr und wird unter dem Bildschirm angezeigt

 Error when accessing Tomcat https

In Tomcat-Protokollen werden keine Fehler angezeigt, und ich habe auch andere Optionen ausprobiert, wie cipher tag in Verbindung zu halten, Enabled TLS 1,2,3, das Ändern von https-Port usw. ohne Erfolg.

Ich habe auch den https-Port 443 getestet und er wird als hörend angezeigt, wenn ich netstat. Jede Idee, warum das nicht funktioniert

Logs hinzugefügt, nachdem das SSL-Debugging in Tomcat aktiviert wurde

http-nio-443-exec-5, fatal error: 10: General SSLEngine problem
javax.net.ssl.SSLHandshakeException: SSLv2Hello is disabled
http-nio-443-exec-5, SEND TLSv1.2 ALERT:  fatal, description = unexpected_message
http-nio-443-exec-5, WRITE: TLSv1.2 Alert, length = 2
http-nio-443-exec-5, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLHandshakeException: SSLv2Hello is disabled
http-nio-443-exec-5, called closeOutbound()
http-nio-443-exec-5, closeOutboundInternal()
[Raw write]: length = 7
10
JavaGeek

Da Sie Java 8 verwenden, wird defaultTLS 1.2

Beim Betrachten Ihres Screenshots ist Client-TLS in Ihrem IE 11 nicht aktiviert. Standardmäßig ist IE 11SSL 3.0, TLS 1.0, 1.1, 1.2 aktiviert.

Wenn Sie die Protokolle Matrix sehen, werden Sie feststellen, warum die Verbindung nicht erfolgreich ist. 

Aktualisieren Sie daher Ihre IE 11 SSL TLS-Einstellungen oder versuchen Sie einen anderen Browser, um dies zu überprüfen.

4

Ich hatte vor langer Zeit das gleiche Problem.

Mi Lösung war (die Schritte, die ich hier befolge, hängt von den Anweisungen der Zertifizierungsstelle ab, die CA-Site hat normalerweise die vollständigen Anweisungen, wie das Zertifikat korrekt generiert wird):

  1. Erstellen Sie das Zertifikat erneut mit den folgenden Befehlen (Schlüsselgröße 2048). (Stellen Sie sicher, dass Name und Nachname mit dem Namen Ihres Site-Namens übereinstimmen: yourhost.com:

keytool -genkey -alias yourhost.com -keyalg RSA -keysize 2048 -keystore servername.jks

  1. Genearate de csr

keytool -certreq -alias yourhost.com -file mycsr.txt -keystore servername.jks

  1. Installieren Sie das Zertifikat

keytool -import -trustcacerts -alias yourhost.com -file file-from-your-ca.p7b -keystore servername.jks

Fügen Sie auf dem server.xml-Connector die folgende Konfiguration ein (Hinweis: Die möglichen Werte für sslProtocol hängen von dem von Ihnen verwendeten jvm ab. Bitte beachten Sie die möglichen Werte für Java 8 Java 8-SSL-Werte ).

<Connector port="443" protocol="org.Apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false"  keystoreFile="/home/myserver/ssl/servername.jks" keystorePass="yourpass" keystoreAlias="yourhost.com" sslProtocol="TLSv1.2"  />

Starten Sie Tomcat neu

Es gibt weitere Beispiele für die Konfiguration des sicheren Connectors auf dieser Site: Secure Tomcat

3
Daniel C.

Versuchen Sie, die Verwendung von JSSE zu erzwingen, indem Sie in Ihrem Connector Folgendes hinzufügen:

sslImplementationName="org.Apache.Tomcat.util.net.jsse.JSSEImplementation"

Aus irgendeinem Grund wird APR erkannt und versucht, OpenSSL zu verwenden, was nicht funktioniert. Siehe diese Antwort .

0
vladimir83

Ich bin derzeit mit einem ähnlichen Problem konfrontiert und habe den starken Verdacht, dass unser Problem mit der Tomcat-Konfiguration in server.xml zusammenhängt. Ich sehe auch, dass der Dienst auf dem Port überwacht wird, und nicht viele hilfreiche Meldungen in Protokolldateien. 

Mir wurde von einem Kollegen gesagt, der (ein sicherer Tomcat mit SSL) zum Laufen kam 

   <Connector port="443" scheme="https" server="Secure Web Server"
              minSpareThreads="25" allowTrace="false" keystoreType="JKS"
              keystoreFile="C:\Tomcat\conf\aSecureTomcat.jks" keystorePass="yourPassword"  
              connectionTimeout="20000"
              protocol="org.Apache.coyote.http11.Http11NioProtocol" 
              secure="true" clientAuth="false" sslProtocol="TLS" 
              sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" 
              useServerCipherSuitesOrder="true" 
              ciphers="TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"/> 

Ich habe die minimale Konfiguration noch nicht herausgefunden, aber für Sie könnten die letzten 5 Zeilen meines Code-Snippets wichtig sein. Wie sieht Ihre Tomcat-Konfiguration aus?

0
B--rian

Ändern Sie einfach Ihre ursprüngliche server.xml: sslProtocol = TLSv1.2 Geben Sie die Versionsnummer an. Hatte den gleichen Fehler vor.

0
senadorbarrago

Tomcat kann zwei verschiedene Implementierungen von SSL verwenden:

die JSSE-Implementierung, die als Teil der Java-Laufzeitumgebung bereitgestellt wird (seit 1.4) Die APR-Implementierung, die standardmäßig die OpenSSL-Engine verwendet. Die genauen Konfigurationsdetails hängen von der verwendeten Implementierung ab. Wenn Sie den Connector durch Angabe des generischen Protokolls = "HTTP/1.1" konfiguriert haben, wird die von Tomcat verwendete Implementierung automatisch ausgewählt. Wenn bei der Installation APR verwendet wird (d. H. Sie haben die native Tomcat-Bibliothek installiert), wird die APR-SSL-Implementierung verwendet. Andernfalls wird die Java-JSSE-Implementierung verwendet.

Weitere Informationen zur Konfiguration finden Sie in https://Tomcat.Apache.org/Tomcat-8.0-doc/ssl-howto.html . Ich folge einfach den Schritten und es funktioniert für mich. 

Am wichtigsten, Sind Sie sicher, dass Sie Probleme mit Ihrem Tomcat haben? Ihr Fehler kann von Ihrem Browser stammen. 

  • Haben Sie andere Browser als IE ausprobiert? 
  • Welche Version von IE verwenden Sie? 
  • Windows 7 oder Windows 8?

Wenn Sie das Problem nur im IE haben, überprüfen Sie auch SSL 2.0 und SSL 3.0 unter Erweiterte Einstellungen sowie den empfohlenen Fix zum Aktivieren von TLS 1.0, TLS 1.1 und TLS 1.2.

0
Kambiz