SSL Erreur: impossible de trouver le chemin de certification valide à la demande de la cible
Je suis en train d'essayer de se connecter à une url sur mon serveur qui requiert le certificat. J'ai importé mon Certificat d'Authentification du Client à {JAVA_HOME}/jre/bin/security/cacerts et aussi je l'ai placé dans le fichier de clés dans Jboss/bin et jboss/serveur/conf/puis j'ai redémarré mon serveur et il est encore de me donner ce qui suit erreur.
Caused by: java.io.IOException: Could not transmit message
at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:265)
at org.jboss.ws.core.client.SOAPProtocolConnectionHTTP.invoke(SOAPProtocolConnectionHTTP.java:71)
at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:340)
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:290)
... 40 more
Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker after 1 attempt(s)
at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:249)
at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:161)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:165)
at org.jboss.remoting.Client.invoke(Client.java:1724)
at org.jboss.remoting.Client.invoke(Client.java:629)
at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:243)
... 43 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1611)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:187)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:181)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1035)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:124)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1139)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:904)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
at org.jboss.remoting.transport.http.HTTPClientInvoker.getOutputStream(HTTPClientInvoker.java:1214)
at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:334)
at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:231)
... 48 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:294)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:200)
at sun.security.validator.Validator.validate(Validator.java:218)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1014)
... 62 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:289)
... 68 more
Je veux vous demander ce que je peux faire pour le réparer? Dois-je mettre un autre un de ces server.xml pour ce certificat:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150"
scheme="https" secure="false" strategy="ms" address="${jboss.bind.address}"
keystoreFile="${jboss.server.home.dir}/conf/.keystore"
keystorePass="changeit" sslProtocol="TLS"
truststoreFile="/usr/lib/jvm/java-6-sun-1.6.0.10/jre/lib/security/cacerts"
truststorePass="*****"
SSLImplementation="org.jsslutils.extra.apachetomcat6.JSSLutilsImplementation"
acceptAnyCert="true" clientAuth="want" />
ou ai-je fait autre erreur?
Pourquoi utiliser jSSLutils pour cela (pourquoi accepter toute cert ici)? Pourquoi importer votre client cert par défaut dans le
il est serveur distant
Que dois-je faire pour le faire fonctionner?
Si c'est un serveur distant, votre serveur est un client. C'est votre code de client que vous avez besoin pour configurer correctement. Oubliez ces inhabituelle paramètres de Connecteur.
Non, désolé. Je ne suis pas sûr que le serveur distant. donc, Mon serveur est le serveur par lequel je suis à l'appel de cette url, ce qui requiert un certificat. j'ai seulement besoin de certificat quand je fais un appel à cette url. Maintenant, je dois importer ce certificat à quelque part(je ne suis pas sûr de répertoire ou de magasin de clés), de sorte que lorsque j'essaie d'accéder à l'url, il peut utiliser ce certificat et entrer l'url. et puis je peux faire ce qui est nécessaire à partir de cette url. maintenant, quand il fait un appel à l'url, j'obtiens erreur mentionné ci-dessus. Pouvez-vous m'indiquer où je dois importer le certificat et toutes les autres étapes manquantes?
cacerts
? Pourquoi spécifier le truststore avec sa valeur par défaut de toute façon? C'est votre serveur qui doit exiger un certificat ou le serveur distant auquel vous essayez d'accéder?il est serveur distant
Que dois-je faire pour le faire fonctionner?
Si c'est un serveur distant, votre serveur est un client. C'est votre code de client que vous avez besoin pour configurer correctement. Oubliez ces inhabituelle paramètres de Connecteur.
Non, désolé. Je ne suis pas sûr que le serveur distant. donc, Mon serveur est le serveur par lequel je suis à l'appel de cette url, ce qui requiert un certificat. j'ai seulement besoin de certificat quand je fais un appel à cette url. Maintenant, je dois importer ce certificat à quelque part(je ne suis pas sûr de répertoire ou de magasin de clés), de sorte que lorsque j'essaie d'accéder à l'url, il peut utiliser ce certificat et entrer l'url. et puis je peux faire ce qui est nécessaire à partir de cette url. maintenant, quand il fait un appel à l'url, j'obtiens erreur mentionné ci-dessus. Pouvez-vous m'indiquer où je dois importer le certificat et toutes les autres étapes manquantes?
OriginalL'auteur user2367636 | 2013-07-05
Vous devez vous connecter pour publier un commentaire.
Je sais que vous avez dit que vous avez déjà importé le certificat, mais jetez un oeil à ces étapes pour voir si vous avez manqué une étape quelque part:
Voici un résumé d'ensemble de la façon de certificats d'importation pour corriger l'erreur suivante:
Comment faire pour importer des certificats
.der
Importer tous *.der fichiers dans le fichier cacerts utilisant les éléments suivants:
Le stockage par défaut de l' mot de passe est "changeit'
Vous pouvez voir le changement que vous avez fait avec cette commande, qui montre le Certificat d'empreintes digitales.
Si cela ne résout pas le problème, essayez d'ajouter ces options java arguments:
OriginalL'auteur Katie S
Pour SSL Web de configuration du service nous devons faire de ce suit:
1) insérez les certificats d'autorité de certification dans un magasin de clés, vous pouvez mettre ceci à la JVM ou mettre dans la jre de sécurité de répertoire, ou vous pouvez importer de la jre de stockage par défaut.
2) l'importation, l'authentification de certificat avec une clé dans le fichier de clés (il pourrait être keystore java ou un autre). fichier de clés peut être jks trop, non seulement pkcs12. J'ai testé et jks fonctionne bien aussi.
3) Dites JVM que vous avez besoin de ce fichier de clés - lorsque nous sommes démarrage de Jboss. Il peut être quelque chose comme ceci (dans mon cas, ça ressemble à ça):
Également des certificats peut être der encodded ou en base 64. cela signifie que vous pouvez avoir besoin de convertir des certificats avec open SSL et etc. Aussi un autre problème est que, parfois, convertation peut provoquer des problèmes, de sorte que vous pouvez utiliser un tel script pour plus de facilité et de souplesse convertations.
OriginalL'auteur grep
J'ai été confronté à ce problème, car des personnes handicapées TLSv1.2 protocole. J'ai résolu en ajoutant TLSv1.2 VM arguments. Ci-dessous sont les étapes pour activer le protocole
Vous devez ajouter cette ligne dans vm arguments -- >
-Dhttps.protocols=TLSv1.1,TLSv1.2
Aller à l'onglet serveurs dans eclipse >> double-cliquez sur wildfly >> Ouvrir le lancement de configuration >> coller au-dessus de la ligne de vm arguments à la fin.
OriginalL'auteur Prabjot Singh
Si c'est un certificat client, alors vous devez mettre dans votre truststore; si c'est un serveur de certificat, puis il va dans votre fichier de clés. Aussi, dans le cas où votre certificat d'autorité de certification intermédiaire des Certificats, vous devez les ajouter trop.
Pouvez-vous montrer comment vous appelez l'url. Poste le code en pastebin ou dans un endroit similaire. Ne peut pas se connecter client http invoker après 1 tentative - Devriezpas il sera https? Je pense que la façon dont vous êtes en invoquant est faux
OriginalL'auteur Rajarshi Goswami