javax.net.le protocole ssl.SSLException: java.de sécurité.InvalidAlgorithmParameterException: le trustAnchors paramètre doit être non vide
Je suis à la recherche de parser un fichier XML qui met à jour le fichier mentionné quotidien - le seul problème que j'ai rencontré est qu'ils utilisent leur propre certificat (https://...) et je ne peux utiliser que l'URL spécifique, ni est-il un http://... lien disponible.
URL url = new URL("https://...");
...
Document document = db.parse(url.openStream());
Ce code génère l'exception suivante lors de l'exécution de mes tests:
javax.net.le protocole ssl.SSLException: java.lang.RuntimeException: erreur Inattendue: java.de sécurité.InvalidAlgorithmParameterException: le trustAnchors paramètre doit être non vide
J'ai vu une variété de suggestions de traiter avec la création de différentes classes pour traiter ce type de connexion ou avec un serveur personnel, ainsi que l'ajout d'un certificat à un fichier de clés, puis en ajoutant que le fichier de clés pour le projet en Java, mais j'ai été incapable de le faire et je suis à la recherche un peu plus simple pour moi d'aller sur l'accès à l'XML en ligne.
Cela a eu pour effet de supprimer le défaut de trust store, d'où vous avez obtenu un vide trustAnchors paramètre. Il doit toujours être non vide truststore.
Voir ce Réponse[1] En résumé, le fichier de clés ne peuvent pas être trouvés. [1]: stackoverflow.com/a/6788682/207131
Double Possible de Erreur - trustAnchors paramètre doit être non vide
OriginalL'auteur Acetaminophen | 2011-12-04
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'un truststore pour stocker les certificats SSL. Vous pouvez télécharger le certificat à l'aide de votre navigateur web préféré. Pour charger le certificat dans le truststore, vous avez besoin de la "keytool" du programme, qui est livré avec le JDK.
Par exemple, si votre fichier de certificat est nommé "certificat.crt" et vous souhaitez créer un truststore nommé "sécurisé.ts", vous pouvez appeler keytool comme suit:
Maintenant, vous devez le dire à votre programme dans lequel le fichier est et le mot de passe pour l'ouvrir, de définir les propriétés du système "javax.net.le protocole ssl.trustStore" et "javax.net.le protocole ssl.trustStorePassword" avant l'ouverture de la connexion
OriginalL'auteur Errepunto
Ce curieux message signifie que le truststore n'a pas été trouvé.
Rien du tout à voir avec XML BTW.
Voir la Javadoc: Sécurité/JSSE Guide de Référence.
si votre truststore n'ont pas confiance dans le certificat du serveur. Il est donc probablement auto-signé. Vous devez l'importer dans votre fichier cacerts, ou plus probablement copier votre fichier cacerts à un truststore, importez le certificat de serveur, et de l'utiliser comme le truststore. Voir forums.oracle.com/forums/... pour une éventuelle importation de solution. La meilleure solution est d'obtenir que le serveur utilise un certificat signé par une autorité de certification.
Quels enjeux? Il compile et exécute très bien pour moi. (b) je n'ai jamais compris l'engouement pour la désactivation de la vérification du certificat. Si vous ne voulez pas sûr, pourquoi utiliser SSL? (c) mettre certificats dans lib/security n'est pas accomplir quoi que ce soit.
jusqu'à présent, votre problème n'a rien à voir avec le langage XML (@EJP correctement ré-étiqueté à votre question). Maintenant,
UnknownHostException
: je ne suis pas sûr de savoir pourquoi vous souhaitez supprimer lehttps://
précédant le lien.NumberFormatException
: cela peut avoir à faire avec le traitement de votre document XML à un certain stade. Cela devrait probablement être abordée dans une autre question, car il n'a rien à voir avec SSL maintenant.OriginalL'auteur user207421
Vous pouvez essayer ceci:
OriginalL'auteur atiruz
J'ai couru dans la même Exception pour mon MAC OS x (Yosemite), tandis que le développement de la version 6 de Java applications. Vous devez télécharger et installer Java pour Apple pour OSX 2014:
http://support.apple.com/kb/DL1572
OriginalL'auteur MasterV