À l'aide de SSLContext avec seulement un certificat d'autorité de certification et aucun fichier de clés
Je besoin pour configurer un javax.net.ssl.SSLContext
pour une utilisation dans un Jersey de la demande du Client. Tout ce que je veux faire, c'est le contexte d'accepter une coutume certificat ca racine. Est est vrai qu'il n'existe aucun moyen autour de la génération d'un fichier de magasin de clés et d'importer le certificat CA?
OriginalL'auteur Remo | 2013-08-29
Vous devez vous connecter pour publier un commentaire.
Il y a moyen de le faire sans un fichier de magasin de clés, mais puisque vous avez à charge le certificat d'autorité de certification, vous voulez faire confiance à une façon ou d'une autre, vous devrez charger un fichier ou d'une ressource en quelque sorte.
(Vous pouvez aussi certainement mettre en place votre propre
TrustManager
qui rend tous les appels d'utiliser le Chemin d'accès de Certification API, sans l'aide de laKeyStore
API à tous, mais que ne ferait qu'augmenter la complexité de votre code, et non pas de la réduire. Vous aurez aussi besoin de comprendre les Java PKI Guide du Programmeur de le faire correctement.)Si vous ne voulez vraiment pas un fichier de magasin de clés, vous pouvez utiliser le
KeyStore
API dans la mémoire, et de charger le certificat directement.Quelque chose le long de ces lignes devrait fonctionner (pas testé):
(N'oubliez pas de fermer tout et de gérer les exceptions.)
Si le chargement du certificat de cette façon ou de chargement du certificat dans un semblable
KeyStore
instance à partir d'un fichier de magasin de clés est plus pratique est à vous de décider.javax.net.ssl.TrustManagerFactory
et PAScom.sun.net.ssl.TrustManagerFactory
; le plus tard est désormais obsolète. Des acclamations.En général, vous ne devriez pas importer de
com.sun.*
ousun.*
paquets directement de toute façon.Dans mon cas, le certificat est ajouté par l'utilisateur (via les paramètres) et arrive comme une chaîne Base64:
java.io.InputStream is = new java.io.ByteArrayInputStream( java.util.Base64.getDecoder().decode(cert) );
fonctionne comme un charme. Merci!OriginalL'auteur Bruno