一个Web服务代理中的SSL证书问题

3

我正在构建一个JAVA Web服务客户端,其中我连接到了一个服务。

这个服务需要进行SSL证书验证。

如何使用SSL证书验证调用此服务。

我在Eclipse中使用JAX-RPC实现客户端构建。

如果有示例将不胜感激。

3个回答

2

我能够进行Web服务连接...

我使用以下命令添加了密钥库:

keytool -import -trustcacerts -file <file path/filename.cer> -alias <aliasName> -keystore <JAVA_HOME/jre/lib/security/cacerts> 

将密码设置为"changeit"并将证书添加到密钥库中。

现在在代码中我添加了两行:

System.setProperty("javax.net.ssl.trustStore", "<JAVA_HOME>/jre/lib/security/cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

还添加了

_call.setUsername("username");
_call.setPassword("password"); 

_call是Call类的调用对象。

它成功了!!!!


0
你只需要使用以下命令将服务器根证书注入到你的JDK/JRE环境中:-
keytool -importcerts -trustcacerts -file <path_to_root_cer_file> -alias <the_server_alias> -keystore <your_keystore>

默认的 [your_keystore] 是什么?
 1. <JDK_HOME>/jre/lib/security/cacerts
 2. <JRE_HOME>/lib/security/cacerts

默认密码是changeit

当您调用Web服务时,只需提及

"https://<host>:<SSL_port>/Path/To/Services"

希望这能帮助您实现您的需求。

祝好,

Charlee Ch.


0
你是说你的网络服务受到了“客户端证书”的保护?如果是的话,从服务提供商那里获取证书,可以是.p12(PFX)或密钥库格式,并在调用之前使用以下系统属性进行设置:
javax.net.ssl.keyStore - 服务器上密钥库的路径
javax.net.ssl.keyStorePassword - 密钥库的密码
javax.net.ssl.keyStoreType - 如果客户端证书是.p12格式,请将其设置为"pkcs12"
如果你的应用程序只是一个网络服务提供商的客户端,将这些属性设置为VM参数;如果不是,你可能需要为每个安全端点创建特定的SSL连接工厂。有关创建自定义SSL套接字工厂的详细信息,请参考我在post中的回复。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接