2014-05-08 1 views
0

J'essaie maintenant d'accéder au service Web via https et pour ce faire, j'ai fait ce qui suit.Problème dans le certificat auto-signé

J'ai utilisé les commandes ci-dessous pour générer le certificat auto-signé et placé dans/conf dir.

keytool -genkey -alias localhost -keyalg RSA -validity 365 –keystore server.keystore –storetype JKS 
keytool -export -alias localhost –keystore server.keystore -rfc -file public.cert 
keytool -import -alias localhost -file public.cert –storetype JKS -keystore server.truststore 

Ci-dessous est l'entrée server.xml

<Connector className="org.apache.catalina.connector.http.HttpConnector" 
       port="8443" minProcessors="5" maxProcessors="75" 
       enableLookups="true" 
      acceptCount="10" debug="0" scheme="https" secure="true"> 
     <Factory className="org.apache.catalina.net.SSLServerSocketFactory" 
       keystoreFile="conf/server.keystore" 
       keystorePass="changeit" 
       truststoreFile="conf/server.truststore" 
      truststoreType="JKS" truststorePass="changeit" 
       clientAuth="false" protocol="TLS"/> 
</Connector> 

Et maintenant je suis face à l'erreur ci-dessous. Cependant l'erreur n'est pas levée si j'ajoute le code ci-dessous dans le fichier de classe accédant au webservice.

AxisProperties.setProperty("axis.socketSecureFactory","org.apache.axis.components.net.SunFakeTrustSocketFactory"); 

Pourriez-vous m'aider à résoudre ce problème?

+0

Dans la toute première commande, vous avez '-keystore' sans argument obligatoire. De plus, vous semblez enregistrer le certificat de clé publique du serveur dans le fichier de clés certifiées, sauf s'il s'agit d'une faute de frappe. – divanov

+0

@divanov Mise à jour de la commande d'origine J'ai utilisé cmd, désolé pour mon erreur. Reg le truststore, j'ai utilisé la commande fournie, si cela est faux, pourriez-vous s'il vous plaît me guider pour effectuer l'action correctement? Merci - –

Répondre

0

L'entrée ci-dessous est ajoutée dans le fichier de classe où l'appel à https arriverait et cela fonctionne comme charme. Pourtant je ne suis pas sûr pourquoi l'entrée de xml n'est pas considérée. PS: L'entrée xml et l'entrée de la classe sont nécessaires sinon la même erreur est renvoyée. Je n'ai pas encore d'image claire à ce sujet. Peut-être que quelqu'un pourrait expliquer. Merci

0

TLS est mis en place sur deux côtés: serveur et client. Chaque côté doit avoir sa propre paire de clés enregistrée dans un magasin de clés. Appelons-les serverKeystore.jks et clientKeystore.jks Ensuite, un magasin de clés supplémentaire doit être créé et ne contenir que la clé publique. Celui-ci est appelé magasin de confiance et utilisé pour l'authentification de clé. Suivez le même schéma et enregistrez-les dans serverTruststore.jks et clientTruststore.jks.

Dans un sens, la clé du serveur TLS est en cours d'authentification.

  • Le serveur doit avoir uniquement serverKeystore.jks configuré dans Connector. Le client doit avoir fourni à la fois clientKeystore.jks et serverTruststore.jks.

Dans les deux cas, les clés serveur et client sont en cours d'authentification.

  • Server doit avoir serverKeystore.jks et clientTruststore.jks provisionnés Connector. Le client doit avoir fourni à la fois clientKeystore.jks et serverTruststore.jks.

client enregistre les magasins clés soit en spécifiant la variable Java environnement avec

-Djavax.net.ssl.keyStore="path\\to\\server.keystore" 

dans les paramètres pour commander le démarrage JVM, ou par programmation dans le code avec

System.setProperty("javax.net.ssl.keyStore", "path\\to\\server.keystore"); 

Techniquement, il est possible d'utiliser la même paire de clés sur le client et le serveur comme vous l'avez fait.Mais cela compromet la clé privée, car ce n'est plus un secret.

Questions connexes