2010-09-19 3 views
3

J'ai créé un certificat à l'aide keytool:Tomcat SSL: Aucun certificat de confiance trouvé

keytool -genkey -alias tomcat -keyalg RSA 

et importaient Exporté dans mon keystore:

keytool -export -alias tomcat name.crt 
keytool -import -file name.crt 

Quand je ne Keytool -list j'ai 2 entrées:

tomcat, Sept 15, 2010, keyEntry, 
Certificate fingerprint (MD5): ... 
mykey, Sept 17, 2010, trustedCertEntry 
Certificate fingerprint (MD5):... 

Notez que les empreintes digitales pour les deux entrées sont les mêmes.

J'ai configuré mon server.xml pour pointer vers mon dossier .keystore

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" 
     maxThreads="150" scheme="https" secure="true" 
     keystoreFile="${user.home}/.keystore" keystorePass="changeit" 
     clientAuth="false" sslProtocol="TLS" /> 

<Connector port="8009" protocol="AJP/1.3" redirectPort="443" /> 

Mais dans mes journaux tomcat que je vois quand je joue une action dans mon application Java:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found 
... 
sun.security.validator.ValidatorException: No trusted certificate found 

est-il toute autre configuration qui doit être faite?

+0

Est-ce que vous faites quoi que ce soit entre '' -export' et -import' (pourquoi réimportation ce que vous venez exporté)? Avez-vous mis le nom d'hôte complet quand 'keytool' demande" * Quel est votre prénom et votre nom? * "(C'est pour le nom commun en fait)? Votre application tente-t-elle de se connecter au serveur lui-même (il serait utile de voir plus de trace de la pile). – Bruno

+0

Je l'ai réimporté parce que je pensais qu'il devait être un trustedCertEntry. Je n'ai pas de nom d'hôte ATM. Puis-je utiliser mon adresse IP à la place? – CoolGravatar

Répondre

1

Vous avez besoin du client (c'est-à-dire du navigateur) pour faire confiance aux certificats de vos serveurs. Pour cela, vous devez soit importer le certificat du serveur dans le navigateur en tant que certificat de confiance, ce qui ne fonctionne que lorsque vous avez le navigateur sous votre contrôle. Ou vous obtenez votre certificat signé par une autorité de confiance, ce qui coûte de l'argent.

exporter et réimporter sous un nom différent n'a aucun sens.

Mise à jour:

Je pense que je commence à comprendre ce que vous essayez de faire. Vous voulez qu'un client Java accède à une application Web via https. Oui?

Dans ce cas, vous devez fournir un 'fichier de clés certifiées', c'est-à-dire un fichier de clés contenant les certificats de confiance. Vous devez définir la propriété système javax.net.ssl.trustStore sur le nom du fichier de clés certifiées à utiliser.

Vous pouvez également utiliser TrustManager à la main. Ce site semble donner des informations à ce sujet: http://download.oracle.com/javase/1.4.2/docs/guide/security/jsse/JSSERefGuide.html

Cet exemple simple pourrait aider aussi: http://stilius.net/java/java_ssl.php

+0

J'ai importé le certificat dans mon navigateur. Donc, je ne peux pas utiliser un certificat auto-signé? – CoolGravatar