X509TrustManager Remplacer sans permettre à TOUS les certs?
Je suis actuellement en substituant X509TrustManager pour permettre à tous les certs en tant que temporairement "solution" (un dangereux qui plus est). Je suis à essayer de comprendre comment je pourrais aller sur l'ajout en sorte qu'il accepte un cert que je vais avoir des problèmes avec jusqu'à ce qu'une bonne correction peut être fait (ce qui est hors de mes mains en ce moment). Voici le code actuel.
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}
}};
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (GeneralSecurityException e) {
System.out.println(e.getStackTrace());
}
pourquoi retourner la valeur null au lieu d'un tableau vide? la spécification dit de retourner une valeur non nulle de la matrice.
OriginalL'auteur user1015523 | 2012-08-08
Vous devez vous connecter pour publier un commentaire.
Tout ce que vous devez faire est de retourner le certificat de
getAcceptedIssuers
. Voir cettepuis retour dans un tableau à l'intérieur de la méthode
Ce que j'ai fait c'est d'utiliser un navigateur pour tirer vers le bas le cert à partir du site via un navigateur (quand vous voyez l'erreur, il devrait y avoir une option dans tous les principaux navigateurs pour l'enregistrer sur le disque), puis l'ajouter à la clé de stockage comme StephenC dit ou utiliser le code ci-dessus à partir du fichier. La solution ci-dessus peut être un peu moins douloureux (mais de moins en moins flexibles), car autant que je me souvienne de générer des fichiers de clés est un peu une corvée.
Si openssl est disponible, la chaîne de certificat peut être téléchargé sur la ligne de commande: openssl s_client -accueil http://www.webservicehost.com -le port 443 -showcerts > output_certificate.crt
OriginalL'auteur dfb
Une possibilité serait d'ajouter temporairement la problématique de certificat à votre JVM du magasin de clés, comme un certificat de confiance.
OriginalL'auteur Stephen C