Pregunta

Estoy trabajando en una biblioteca que está destinado a ser integrado en otras aplicaciones. Tengo que comunicarse con un servidor https, y estoy usando Apache Commons HttpClient 3.1. Tengo mi propio almacén de claves y necesidad de registrar un Protocolo a través de: Protocol.registerProtocol. Me preguntaba si había una manera de registrar esto para mi instancia específica del cliente en lugar de estática -. De esta manera yo no estropear cualquier otra instancia y nadie me recoger el desorden

vi algo donde puedo conseguir el HostConfiguration clientes y llamada setHost , con un protocolo, pero no parece que el trabajo correctamente. Estoy registrarlo como:

HostConfiguration config = client.getHostConfiguration();
config.setHost(remoteUrl.getHost(), remoteUrl.getPort(), new Protocol("https", new MyProtocolSocketFactory(), 443));

pero al intentar hacer una conexión, el protocolo de enlace SSL falla, mientras funciona cuando se utiliza Protocol.registerProtocol con los mismos parámetros. El fracaso es el estándar:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

¿Fue útil?

Solución

Actualizar a HttpComponents 4 y 3.x cliente dejara en paz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top