web-dev-qa-db-fra.com

SSL ne fonctionne pas pour Tomcat 8

J'essaie de configurer SSL (https) pour Tomcat 8 et j'ai effectué les étapes ci-dessous, mais cela ne fonctionne toujours pas.

1) Créez le fichier de clés en utilisant

keytool -genkey -alias myservername -keyalg RSA

2) CSR généré comme ci-dessous

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

3) Ensuite, nous avons généré le certificat puis importé le certificat de chaîne et le certificat ci-dessous.

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) Enfin les modifications dans Tomcat server.xml sont-elles comme ci-dessous

<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"/>

Redémarré le Tomcat et son ne fonctionne pas et montrant l'écran ci-dessous

 Error when accessing Tomcat https

Dans les journaux Tomcat, cela ne montre aucune erreur et j’ai aussi essayé d’autres options telles que conserver la balise cipher dans la connexion, Enabled TLS 1,2,3, changer le port https, etc.

De plus, j'ai testé le port https 443 et il montre que j'écoute quand je netstat. Toute idée pourquoi cela ne fonctionne pas

Ajout de journaux après l'activation du débogage SSL dans Tomcat

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

Comme vous utilisez Java 8, donc default will TLS 1.2

En regardant votre capture d'écran, le client TLS n'est pas activé dans votre IE 11. Par défaut IE 11 a SSL 3.0, TLS 1.0, 1.1, 1.2 activé.

Si vous voyez le protocoles matrix, vous comprendrez pourquoi la connexion n’est pas établie. 

Par conséquent, veuillez mettre à jour vos paramètres TLS SSL IE 11 ou essayez d’utiliser un autre navigateur pour vérifier.

4
Rishikesh Darandale

J'ai eu le même problème il y a longtemps.

Ma solution était (les étapes que je suis ici dépendent des instructions de l’AC, le site de l’AC dispose habituellement de toutes les instructions pour générer correctement le certificat):

  1. Créez à nouveau le certificat, mais avec les commandes suivantes (taille de clé 2048) (assurez-vous que le nom et le nom sont identiques à ceux de votre exemple de nom de site: 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. Installer le certificat

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

Sur le connecteur server.xml, mettez la configuration suivante (note: les valeurs possibles de sslProtocol dépendent du jvm que vous utilisez, veuillez consulter les valeurs possibles pour Java 8 les valeurs ssl de Java 8 )

<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"  />

Redémarrer Tomcat

Il existe d’autres exemples de configuration du connecteur sécurisé sur ce site: Secure Tomcat

3
Daniel C.

Je suis actuellement confronté à un problème similaire, et j’ai la forte suspicion que notre problème a quelque chose à voir avec la configuration de Tomcat dans server.xml . Moi aussi, je vois le service écouter sur le port et peu de messages utiles dans les fichiers journaux. 

Un collègue qui s’est fait (un Tomcat sécurisé avec SSL) s’est présenté pour entrer. 

   <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"/> 

Je n'ai pas encore compris la configuration minimale, mais la partie importante pour vous pourrait bien être les 5 dernières lignes de mon extrait de code. A quoi ressemble votre configuration Tomcat?

0
B--rian

Il suffit de changer votre server.xml d'origine: sslProtocol = TLSv1.2 Inclure le numéro de version. Eu la même erreur avant.

0
senadorbarrago

Tomcat peut utiliser deux implémentations différentes de SSL:

l'implémentation JSSE fournie dans le cadre de l'exécution de Java (depuis la version 1.4) l'implémentation APR, qui utilise le moteur OpenSSL par défaut . Les détails de la configuration exacte dépendent de l'implémentation utilisée. Si vous avez configuré Connector en spécifiant le protocole générique = "HTTP/1.1", l'implémentation utilisée par Tomcat est automatiquement choisie. Si l'installation utilise APR - c'est-à-dire que vous avez installé la bibliothèque native Tomcat -, elle utilisera l'implémentation SSL APR, sinon elle utilisera l'implémentation JSSE Java.

Veuillez vous référer à https://Tomcat.Apache.org/Tomcat-8.0-doc/ssl-howto.html pour obtenir tous les détails sur la configuration. Je ne fais que suivre les étapes et cela fonctionne pour moi. 

Plus important encore, Êtes-vous sûr d'avoir un problème avec votre Tomcat? Votre erreur peut provenir de votre navigateur. 

  • Avez-vous essayé d'autres navigateurs que IE? 
  • Quelle version de IE utilisez-vous? 
  • Windows 7 ou Windows 8?

Si vous êtes confronté au problème uniquement dans Internet Explorer, vérifiez également SSL 2.0 et SSL 3.0 sous Paramètres avancés ainsi que le correctif recommandé consistant à activer TLS 1.0, TLS 1.1 et TLS 1.2.

0
Kambiz