微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 SSL 客户端证书与 Apache commons http 客户端一起使用

如何解决如何将 SSL 客户端证书与 Apache commons http 客户端一起使用

我的应用程序正在使用 Apache Commons HTTP 客户端来使用 HTTP 服务 URL。现在我们必须移动 HTTPS 端点 URL。为了使用相同的内容,我们收到了 SSL 客户端证书。我们如何在使用 HTTPS URL 时使用带密码的 .JKS ? (由于应用程序限制不能使用其他API)

KeyStore identityKeyStore = KeyStore.getInstance("JKS");
FileInputStream identityKeyStoreFile = new FileInputStream(new File(certificatePath));
identityKeyStore.load(identityKeyStoreFile,password.tochararray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
tmf.init(identityKeyStore);
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
keyManagerFactory.init(identityKeyStore,password.tochararray());
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(keyManagerFactory.getKeyManagers(),tmf.getTrustManagers(),null);
SSLContext.setDefault(sslContext);        
PostMethod post = new PostMethod("https://url");
    HttpClient httpClient = new HttpClient();
    String reqMessage = getSolaceRequestMessage(message,hostName,port,authentication);
    Part[] parts = {
        new StringPart("reqMessage",message),};
    post.setRequestEntity(
        new MultipartRequestEntity(parts,post.getParams())
    );
    httpClient.executeMethod(post);

解决方法

我们在后台服务部分使用的 *.jks。

我可以给你一个我的项目 Java Spring Boot 的例子,我在我的后台服务中更改了 http --> https,并在 Nginx 中添加了我的证书。

Example of https simple services

当您改回服务时,您可以直接在前端应用程序中调用 https(例如 web angular)。

,

我使用了以下对我有用的实现,因为有不升级 http 客户端库的限制。

System.setProperty(JAVAX_NET_SSL_TRUSTSTORE,"H://certificateFile.jks");
System.setProperty(JAVAX_NET_SSL_TRUSTSTORE_KEY,"abcd");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。