Apache HttpClient 4 -sovelluksessa HTTPS-kohde ei tarkoita, että jokainen yhteys alkaa TLS:llä. Tavalliseen HTTP-välityspalvelimeen päästään salaamattomalla yhteydellä ennen kuin CONNECT avaa tunnelin ja TLS kerrostetaan kohti kohdetta.

Jos mukautettu yhteyshallinta rekisteröi vain https:n, ensimmäinen välityspalvelinhyppy voi epäonnistua virheeseen UnsupportedSchemeException: http protocol is not supported.

4.5-rajapinnassa molemmat tehtaat on sisällytettävä, kun kyseinen hallinta rakennetaan:

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 sovelluksen olemassa oleva SSLConnectionSocketFactory, jossa on tarkoitettu luottamuksen ja isäntänimen tarkistus. Näytetyt tyypit kuuluvat Apache 4:n org.apache.http-paketteihin. Katkelma edellyttää Javan paikallisten muuttujien tyyppipäättelyä; vanhempi Java-lähdekoodi voi käyttää eksplisiittisiä tyyppejä.

Liitä korjattu hallinta asiakkaaseen, jota pyynnössä todella käytetään. Sallitulle julkiselle HTTPS-pyynnölle ilman välityspalvelimen todennusta HTTP-välityspalvelinluettelon HTTP-merkintä voi täyttää HttpHostin välityspalvelinosoitteen. Toisen rakentajan määrittäminen ei päivitä jo rakennettua asiakasta.

Tarkista myös rakentajan omistajuus: HttpClientBuilder dokumentoi, että nimenomaisesti annettu yhteyshallinta voi ohittaa sen erilliset SSL-määrityssyötteet. Sijoita tarvittavat tehtaat hallinnan rekisteriin sen sijaan, että olettaisit myöhemmän setSSLContext-kutsun korvaavan sen sisäosat.

Tämä diagnoosi koskee paikallista skeemarekisteriä. Välityspalvelimen todennuspyyntö tai hylätty kohde on myöhempi, erilainen tulos. Säilytä molemmat tehdasrekisteröinnit, kun tutkit näitä vastauksia.

Aiheeseen liittyvät artikkelit