SNI (Server Name Indication) sur Java
Quelqu'un peut-il m'aider à obtenir commencé sur la réalisation de connexions HTTP, avec indication du nom du serveur en Java?
Je suis en train de demander le contenu d'un site, je suis adminstering. J'ai été en utilisant Apache HttpClient de la bibliothèque, mais ma demande pour du contenu sécurisé échoue parce que le site web utilise uniquement SNI pour HTTPS, et le SNI n'est pas activée dans la DefaultHttpClient. J'ai regardé pour des instructions sur la façon d'aborder cette au sein de Apache HttpClient de la bibliothèque, mais je vois la fin, jusqu'à ce document: http://hc.apache.org/httpclient-3.x/sslguide.html, qui est en dehors de la date (en se référant à un code de retour quand HttpClient et HttpCore faisaient partie de Apache commons package).
Donc... toute aide?
OriginalL'auteur JellicleCat | 2012-09-11
Vous devez vous connecter pour publier un commentaire.
vous pourriez voulez suivre https://issues.apache.org/jira/browse/HTTPCLIENT-1119
le client sous-jacent de la mise en œuvre de Java 7 est capable de le supporter et expose la fonctionnalité via SSLSocketImpl#setHost (appelé par le soleil.net.www.le protocole.https.HttpsClient
sur Java 7 utilisation
jusqu'à HTTPCLIENT-1119 est fixé
À l'aide de HttpClient 4.3.2 dans Tomcat sur OpenJDK (jusqu'à la version
1.7.0_111
), la SNI serait encore échouer. Après le passage à Oracle HotSpot (1.7.0_80
), la SNI a travaillé. Pour toute personne confrontée à ce sur AWS Beanstalk, découvrez cette ebextension pour passer de la JVM d'Oracle: gist.github.com/bremeld/6706980OriginalL'auteur cmbntr
C'est la façon dont je l'ai fait dans org.apache.httpcomponents de httpclient v4.3+
Et ce est la façon dont j'ai créé le
HttpClient
SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
.Quelques précisions pour ceux qui pourraient être curieuse comme j'étais:
PropertyUtils
est decommons-beanutils
String HOST = "host";
Constants.SNI_HOST
est le nom d'hôte DNS du serveur auquel vous voulez vous connecter. Plus important encore: La coutume de l'usine n'est plus nécessaire avec httpclient 4.5.2Qu'entendez-vous par "La coutume de l'usine n'est plus nécessaire"? Est-il un défaut de mise en œuvre que nous pourrions utiliser.
l'implémentation par défaut fonctionne hors de la boîte si votre httpclient est jusqu'à ce jour:
SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext)
OriginalL'auteur shreyas
avec un court fixer comme décrit à la rubrique:
TLS avec SNI en Java clients
Il est Possible d'ajouter SNI Support de Serveur pour JDK 7 et de l'Utiliser dans l'ensemble avec X509ExtendedKeyManager.
OriginalL'auteur SkateScout
Ce qui a fonctionné pour moi a été de la configuration de la
ServerName
correctement dans la configuration d'Apache:/etc/apache2/sites-avaible/default
Comme dit dans https://stackoverflow.com/a/8058839/2088282.
OriginalL'auteur Giovanni Silva