Question

Je travaille sur une bibliothèque qui est destiné à être intégré dans d'autres applications. Je dois communiquer avec un serveur https, et j'utilise apache communes HttpClient 3.1. J'ai mon propre et keystore besoin d'enregistrer un Protocole via: Protocol.registerProtocol. Je me demandais s'il y avait un moyen de vous inscrire pour mon exemple spécifique du client plutôt que statiquement -. Ainsi, je ne suis pas gâcher tout autre cas, et personne ne me bousille

J'ai vu quelque chose où je peux obtenir les clients et HostConfiguration appel setHost , avec un protocole, mais il ne semble pas au travail correctement. Je me inscris comme:

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

mais en essayant d'établir une connexion, la poignée de main SSL échoue, alors qu'il fonctionne lorsque vous utilisez Protocol.registerProtocol avec les mêmes paramètres. L'échec est la norme:

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

Était-ce utile?

La solution

Mise à niveau HttpComponents 4 et le congé 3.x client seul.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top