2015-03-18 8 views
7

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?

Antwort

7

Das hat mit dem Wildcard-Matching per se nichts zu tun. Ab Version 4.4 überprüft HttpClient die Zertifikatsidentität anhand der von Mozilla verwalteten Liste public domain suffix, um sicherzustellen, dass Platzhalter im Zertifikatsfach oder in alternativen Namen nur für nicht öffentliche Domänen gelten. Zum Beispiel Muster wie *.com oder *.co.uk sollten als zu breit abgelehnt werden, um ihren Missbrauch zu verhindern.

Zum besseren oder schlechteren enthält die PSL jetzt auch, was die Betreuer der Liste als "private domains" bezeichnen (was eine schrecklich verwirrende Bezeichnung für eine Liste von Public Domain Suffixen ist). googleapis.com ist eine dieser Domänen. HttpClient behandelt 'private' Domains ab dem nächsten Feature Release (4.5) korrekt. Für Details siehe HTTPCLIENT-1613

+0

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

Verwandte Themen