我正在构建一个JAVA Web服务客户端,我在其中连接到一个服务。
此服务具有ssl证书验证。
如何使用ssl证书验证来调用此服务。
我在使用Eclipse构建的客户端中使用JAX-RPC实现。
一个例子是适当的。
答案 0 :(得分:1)
我可以进行网络服务连接......
我使用以下命令添加了密钥库:
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 Class的调用对象。
它有效!!!!!!
答案 1 :(得分: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 。
当您致电网络服务时,只需提及
即可"https://<host>:<SSL_port>/Path/To/Services"
我希望这可能有助于达到你的要求。
此致
Charlee Ch。
答案 2 :(得分:0)
您的意思是您的网络服务受“客户端证书”保护?如果是,请从服务提供商处获取.p12(PFX)或密钥库格式的证书,并在通话前使用以下系统属性进行设置:
javax.net.ssl.keyStore - 服务器上密钥库的路径
javax.net.ssl.keyStorePassword - 该密钥库的密码短语
javax.net.ssl.keyStoreType - 将其设置为“pkcs12”是提供给您的客户端证书.p12
如果您的应用程序只是一个Web服务提供者的客户端,请将这些属性设置为VM参数,否则,您可能需要为每个安全端点创建特定的SSLConnectionFactory。有关创建自定义SSL套接字工厂的详细信息,请参阅我对此post的回复。