SSL Certificat incorrect erreur
Je vais avoir des problèmes de connexion à un site sécurisé à l'aide d'un programme Java. J'ai importé 3 certificats délivrés à partir du serveur que je vais connecter; publique, l'inter et le certificat racine. J'ai bien importé le 3 certs à la java le fichier cacerts. Et aussi spécifié dans l'appel de la classe Java avec les paramètres suivants:
java -Djavax.net.debug=ssl
Djavax.net.ssl.keystore=JAVACACERTS -Djavax.net.ssl.keystorePassword=changeit -server -cp $CLASSPTH -Xmx500m SendOrderResponse
Cependant, je suis un "bad_certificate d'erreur". J'ai regardé le détail de journaux et il semble que le certificat racine n'est pas dans la chaîne de certificats.
Aucune idée de pourquoi c'est arrivé? lorsque j'ai importé le 3 certs dans le Java cacerts? Je suppose que le mauvais certificat a été levée en raison de la chaîne de certificat d'erreur.
- il a des détails suivi par "BAD_CERTIFICATE d'erreur"?
- salut @ringbearer, c'est la seule exception levée par Java: javax.net.le protocole ssl.SSLHandshakeException: Reçu alerte fatale: bad_certificate
Vous devez vous connecter pour publier un commentaire.
Je vous suggère de lancer:
En supposant que le serveur distant, ou les demandes d'authentification du certificat client, il doit vous envoyer une liste des pièces d'Ar.
Vous devez envoyer un certificat en fin de compte signé par l'un de ces CAs.
Les spécifications ssl ne pas nécessiter l'envoi de l'autorité de certification, cependant, vous devriez envoyer le certificat et la totalité de la chaîne intermédiaire pour que CA.
Mon expérience est que les deux certificats d'autorité de certification peut paraître très semblables les uns aux autres. Le passage à 2048 bits n'a pas aidé à cet égard. Double vérifier.
Comme une note de côté, votre client reçu le mauvais certificat d'alerte. Le problème réside avec les certificats de votre client est l'envoi, pas de la validation des certificats de serveur.
(Edit)
Ai-je mentionné que les certificats que vous envoyez doit être valide ? en particulier,
Il semble que vous n'êtes pas en utilisant le client de certificats.
Dans ce cas, ne réglez pas le
javax.net.ssl.keystore
les paramètres de votre application cliente. L'importation qu'à la racine (et peut-être intermédiaire) certificats dans votre truststore (cacerts
par défaut) devrait être suffisant aussi.Plus de détails à propos de fichier de clés/truststore dans cette réponse: https://stackoverflow.com/a/6341566/372643
openssl s_connect -connect SERVERHOST:443
et retournées à la suite de l'erreur ci-dessous:CONNECTED(00000003) depth=1 /C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority - L1C verify error:num=20:unable to get local issuer certificate verify return:0 3110:error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate:s3_pkt.c:1052:SSL alert number 42 3110:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:226:
-CApath
/-CAfile
options.Si vous avez importé les certificats que de s'essayer à cette
et que vos client java