如何在apache commons http客户端上使用ssl客户端证书

ymdaylpp  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(416)

我的应用程序正在使用ApacheCommonsHTTP客户端来使用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);
b4wnujal

b4wnujal1#

我们在后台服务部分使用的*.jks。
我可以给您举一个java spring boot项目的例子,我在后台服务中更改了http-->https,并在nginx中添加了证书。
https简单服务示例
当您更改后台服务时,您可以在前端应用程序中直接调用https(例如web)。

相关问题