Question

Alors que je suis familier avec le protocole HTTPS et le concept de SSL, j'ai récemment commencé un certain développement et trouvé que je suis un peu confus.

L'exigence était que j'écrire une petite application Java qui fonctionne sur une machine attaché à un scanner. Lorsqu'un document est numérisé cela est repris et le fichier (généralement PDF) envoyé sur Internet à notre serveur d'applications qui traitera ensuite. J'ai écrit l'application en utilisant les bibliothèques Apache Commons et HTTPClient.

La deuxième exigence est de se connecter via le protocole SSL, ce qui nécessite un certificat. A la suite des indications sur la page HttpClient J'utilise AuthSSLProtocolSocketFactory de la page contributions.

Le constructeur peut prendre un keystore, mot de passe keystore, et truststore truststore mot de passe. En tant que test initial notre DBA activé SSL sur un de nos serveurs Web de développement et m'a fourni un fichier .p12 qui quand je me IE importés dans permet de connecter avec succès.

Je suis un peu confus entre keystores et et quelles mesures clés certifiées je dois prendre en utilisant l'outil clé. J'ai essayé d'importer le p12 dans un fichier keystore mais obtenir l'erreur:

keytool error: java.lang.Exception: Input not an X.509 certificate

J'ai suivi une suggestion d'importer le p12 dans Internet Explorer et l'exportation comme .cer que je peux importer ensuite avec succès dans un magasin de clés. Quand je l'offre cela comme un argument keystore du AuthSSLProtocolSocketFactory-je obtenir un errror vide de sens, mais si je l'essayer comme truststore il semble que cela le lit bien, mais finalement je reçois

Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate

Je ne suis pas sûr si j'ai manqué quelques pas, je comprends mal SSL et authentification mutuelle tout à fait ou c'est une mauvaise configuration du côté du serveur.

Quelqu'un peut-il fournir des suggestions ou me pointer vers des ressources qui pourraient me aider à comprendre cela s'il vous plaît?

Était-ce utile?

La solution

Le keystore détient vos clés privées et des certificats associés. Truststore détiennent les certificats qui vous avez confiance et qui peut donc être utilisé pour la construction de chemin de certificat et de vérification.

Voici quelques liens qui peuvent être utiles:

java.lang.Exception: Entrée non un certificat X.509

Importer la clé privée et le certificat en Java clé magasin

Configuration Keystores et clés certifiées

Autres conseils

assurez-vous que votre fichier de certificat n'a rien avant et après ceux-ci.

----- ----- BEGIN CERTIFICATE

----- END CERTIFICATE -----

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top