J'ai reçu cette erreur en essayant de démarrer une application:
Sun.security.validator.ValidatorException: PKIX path validation failed:
Java.security.cert.CertPathValidatorException: Java.net.UnknownHostException:oscp.thawte.com
L'application est derrière un réseau fermé et ne pourra jamais accéder à oscp.thawte.com. Existe-t-il un paramètre Java qui peut le désactiver?
-Dcom.Sun.net.ssl.checkRevocation=false
Ce n'est pas exactement un paramètre, mais vous pouvez remplacer les valeurs par défaut TrustManager et HostnameVerifier pour tout accepter. Ce n’est pas une approche sûre, mais dans votre cas, cela peut être acceptable.
Exemple complet: Correction d'un problème de certificat sous HTTPS
Utilisez l'utilitaire cli keytool de la distribution de logiciels Java pour importer (et trust!) Les certificats nécessaires
Échantillon:
De cli, changez dir en jre\bin
Vérifier le magasin de clés (fichier situé dans le répertoire jre\bin)
keytool -list -keystore ..\lib\security\cacerts
Entrez le mot de passe du magasin de clés: changeit
Téléchargez et enregistrez toutes les chaînes de certificats à partir du serveur requis.
Ajouter des certificats (avant qu'il soit nécessaire de supprimer l'attribut "lecture seule" du fichier "..\lib\security\cacerts") Keytool -alias REPLACE_TO_ANY_UNIQ_NAME -import -keystore ..\lib\security\cacerts -file "r:\root.crt "
accidentellement, j'ai trouvé un conseil aussi simple. D'autres solutions nécessitent l'utilisation de InstallCert.Java et JDK
source: http://www.Java-samples.com/showtutorial.php?tutorialid=210
La réponse donnée par MK fonctionne très bien :)
Dans le service Web Axis et si vous devez désactiver la vérification des certificats, utilisez le code ci-dessous:
AxisProperties.setProperty("axis.socketSecureFactory","org.Apache.axis.components.net.SunFakeTrustSocketFactory");
En plus des réponses ci-dessus. Vous pouvez le faire par programme en implémentant TrustManager:
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public Java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {}
}
};
SSLContext sc=null;
try {
sc = SSLContext.getInstance("SSL");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
try {
sc.init(null, trustAllCerts, new Java.security.SecureRandom());
} catch (KeyManagementException e) {
e.printStackTrace();
}
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// Create all-trusting Host name verifier
HostnameVerifier validHosts = new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
// All hosts will be valid
HttpsURLConnection.setDefaultHostnameVerifier(validHosts);
Cependant, ce n'est pas une bonne pratique pour la production.
Consultez cet exemple sur Comment désactiver la validation de certificat SSL en Java