HttpClient javax.net.le protocole ssl.SSLPeerUnverifiedException: peer pas authentifié lors de l'décalé dans le temps?
En raison de l'exigence, nous avons besoin de tester la connexion https par décalage de la date du système à une date ultérieure comme 2025-05-05, le problème est lors de l'utilisation de la HttpClient
(version 4.2), rencontre l'exception
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
La simple segment de code comme ci-dessous:
@Test
public void httpsShouldWorking() throws Exception {
HttpClient client = new DefaultHttpClient();
String urlOverHttps = "https://URL";
HttpGet getMethod = new HttpGet(urlOverHttps);
HttpResponse response = client.execute(getMethod);
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
}
Aussi je google et trouvé une solution HttpClient avec SSL
comme il est mentionné:
Nous allons maintenant configurer le client http pour faire confiance à toutes les chaînes de certificats, indépendamment de leur durée de validité:
Mais après l'essai, il n'est pas de travail et toujours obtenir la auth exception.
Est-il une solution pour éviter l'authentification lors de la maj de la date système?
Vous devez vous connecter pour publier un commentaire.
Il est possible de faire HttpClient de contourner les contrôles de SSL de validité du certificat. Ce code peut être utilisé pour obtenir une instance de HttpClient:
L'exception ne sera plus jeté, lorsque la certification est expiré, le navigateur émet un avertissement au sujet d'un certificat expiré et permettre à l'utilisateur de confirmer.
SSLConnectionSocketFactory(sslContext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
utilisationorg.jsslutils.extra.apachehttpclient.SslContextedSecureProtocolSocketFactory(sslContext, false)
SSLContext ctx = SSLContext.getInstance("TLSv1.2");
(au lieu de "SSL").Au lieu de désactiver l'ensemble de la Sécurité de la Chaîne, il serait beaucoup mieux pour importer un certificat spécifique pour le fichier de clés de votre installation de JAVA. Comment faire pour ce faire, vous pouvez trouver ici: http://java67.blogspot.co.at/2012/09/keytool-command-examples-java-add-view-certificate-ssl.html
Après avoir lu beaucoup de asnwers, ce fut le seul qui m'a aidé.
J'ai résolu mon problème en ignorant certains TLS algorithmes.
Modifier le fichier:
$JAVA_HOME/jre/lib/security/java.security
Ajouter ces deux algorithmes dans la liste
DHE, ECDHE
en ajoutant à lajdk.tls.disabledAlgorithms
.De sorte que le résultat final, dans mon cas, était:
jdk.tls.disabledAlgorithms=SSLv3, DHE, ECDHE
Dans mon cas, sur le scénario suivant:
Le paramètre suivant travaillé:
Pour plus d'informations, jetez un oeil à:
https://www.java.com/en/configure_crypto.html