2017-10-04 5 views
0

Je suis sur Java 8 en utilisant Apache HttpClient (4.5.2) et je reçois cette erreur:Java SNI nom non reconnu

javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name

Je sais que je pouvais contourner qu'utiliser:

Mais si je fais cela, d'autres sites https ne peuvent plus être connectés.

A partir de ces deux sites que je ne peut se connecter à un selon que activer SNI ou non, mais je n'ai pas trouvé un réglage qui me permet de me connecter à la fois avec succès:

Est-ce que quelqu'un peut le reproduire ou l'a résolu?

Répondre

0

Cette exception est déclenchée car le serveur renvoie un certificat qui ne correspond pas au nom de domaine complet que vous avez demandé. La désactivation de l'interface SNI côté client n'est pas la solution adéquate, mais vous devez désactiver la vérification du nom d'hôte, comme expliqué dans la section HttpClient doc

SSLContext sslContext = SSLContexts.createSystemDefault(); 
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
    sslContext, 
    NoopHostnameVerifier.INSTANCE);