【问题标题】:SSL certificate problem in a web service proxyWeb 服务代理中的 SSL 证书问题
【发布时间】:2011-09-23 10:37:10
【问题描述】:

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

此服务具有 ssl 证书验证。

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

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

举个例子。

【问题讨论】:

    标签: java web-services xml-rpc rpc


    【解决方案1】:

    您需要做的就是使用以下命令行将服务器根证书注入您的 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"
    

    我希望这可能有助于实现您的要求。

    问候,

    查理·Ch.

    【讨论】:

      【解决方案2】:

      您的意思是您的网络服务受到“客户端证书”的保护?如果是,请从服务提供商处获取 .p12 (PFX) 或密钥库格式的证书,并在调用之前使用以下系统属性进行设置:

      javax.net.ssl.keyStore - 服务器上密钥库的路径

      javax.net.ssl.keyStorePassword - 该密钥库的密码

      javax.net.ssl.keyStoreType - 将其设置为“pkcs12”是提供给您的客户端证书是.p12

      如果您的应用程序仅是一个 Web 服务提供商的客户端,请将这些属性设置为 VM 参数,如果不是,您可能需要为每个安全端点创建特定的 SSLConnectionFactory。有关创建自定义 SSL 套接字工厂的详细信息,请参阅我对 post 的回复。

      【讨论】:

        【解决方案3】:

        我可以进行网络服务连接...

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

        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 的调用对象。

        它成功了!!!!!!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-04
          • 2015-12-15
          • 2016-01-28
          • 2013-11-01
          • 1970-01-01
          • 2016-07-12
          • 2013-05-24
          • 2014-02-23
          相关资源
          最近更新 更多