Apache HttpClient 4 rakenduses ei tähenda HTTPS-sihtkoht, et iga ühendus algab TLS-iga. Tavalise HTTP-puhverserverini jõutakse krüpteerimata ühenduse kaudu enne, kui CONNECT avab tunnel ja TLS kihitakse sihtkoha suunas.

Kui kohandatud ühendusehaldur registreerib ainult https, võib esimene puhverserveri hüpe ebaõnnestuda veaga UnsupportedSchemeException: http protocol is not supported.

4.5 API puhul kaasake selle halduri loomisel mõlemad tehasad:

var registry = RegistryBuilder.<ConnectionSocketFactory>create()
    .register("http", PlainConnectionSocketFactory.getSocketFactory())
    .register("https", tlsFactory)
    .build();

var manager = new PoolingHttpClientConnectionManager(registry);
var client = HttpClients.custom()
    .setConnectionManager(manager)
    .setProxy(new HttpHost("proxy.example.net", 8080, "http"))
    .build();

tlsFactory on rakenduse olemasolev SSLConnectionSocketFactory koos kavandatud usalduse ja hostinime kontrolliga. Näidatud tüübid kuuluvad Apache 4 org.apache.http pakettidesse. Katkend eeldab Java kohalike muutujate tüübi tuletamist; vanem Java-kood võib kasutada selgesõnalisi tüüpe.

Ühendage parandatud haldur kliendiga, mida päringu jaoks tegelikult kasutatakse. Lubatud avaliku HTTPS-päringu jaoks ilma puhverserveri autentimiseta saab HTTP-puhverserverite loendi HTTP-kirje täita HttpHosti puhverserveri aadressi. Teise ehitaja seadistamine ei värskenda juba loodud klienti.

Uurige ka ehitaja omandit: HttpClientBuilder dokumenteerib, et selgesõnaliselt antud ühendusehaldur võib alistada selle eraldi SSL-konfiguratsiooni sisendid. Pange vajalikud tehasad halduri registrisse, selle asemel et eeldada, et hilisem setSSLContext-kutse asendab selle sisemuse.

See diagnoos puudutab kohalikku skeemiregistrit. Puhverserveri autentimiskutse või keelatud sihtkoht on hilisem, teistsugune tulemus. Säilitage mõlemad tehaste registreeringud, kuni neid vastuseid uurite.

Seotud artiklid