Ich habe vor kurzem wechselte zu Httpclient 4.4 von 4,3 und ich erhalte die SSLPeerUnverifiedException
sagen:Warum lehnt Apache HttpClient 4.4 www.googleapis.com als gültigen Hostnamen ab?
Host name 'www.googleapis.com' does not match the certificate subject provided by the peer (CN=*.googleapis.com, O=Google Inc, L=Mountain View, ST=California, C=US)
Das Problem kommt von der Tatsache als Httpclient jetzt die publicsuffix.org Liste für die Validierung verwendet (Quellcode für SSLConnectionSocketFactory.java sehen).
, um dieses Problem Eine Möglichkeit ist, den Hostnamen Überprüfung zu deaktivieren:
CloseableHttpClient httpClient = HttpClients.custom().
setSSLHostnameVerifier(new NoopHostnameVerifier()).build();
... aber ich versuche, warum die Platzhalter zu verstehen, nicht durch den Kunden abgestimmt ist und warum es gilt als zu breit (reference).
Die RFC2818 spec sagt:
Namen den Platzhalter
Zeichen enthalten*
die jeden einzelnen Domain-Namen
Komponente oder Komponenten Fragment zu entsprechen gilt. Zum Beispiel passt * .a.com zu foo.a.com aber
nicht bar.foo.a.com. f * .com entspricht foo.com, nicht aber bar.com.
Bedeutet dies, dass HttpClient 4.4 die Spezifikation nicht erfüllt?
Vielen Dank, Oleg! Der Client spielt also nach den Regeln und die privaten Domains der PSL sind derzeit problematisch. Dies macht jetzt mehr Sinn. – albogdano