如何使用Java HttpsURLConnection导入证书

时间:2013-05-07 10:08:39

标签: ssl

我想从Websphere Application Server访问通过https托管的Web服务。 我使用以下方式进行https连接。

  HttpsURLConnection connection= (HttpsURLConnection) new URL(wcfUrl).openConnection();
  connection.setDoOutput(true);
  connection.setDoInput(true);
  connection.setAllowUserInteraction(false);
  connection.setInstanceFollowRedirects(false);
  connection.setRequestMethod("POST");
  connection.setRequestProperty("foo",userId );
  connection.setRequestProperty("bar", pwd);
  connection.setRequestProperty("Content-Type","application/xml");
  connection.connect(); 

当我尝试运行此代码时,出现以下错误  * com.ibm.jsse2.util.g:PKIX路径构建失败: java.security.cert.CertPathBuilderException:PKIXCertPathBuilderImpl无法构建有效的CertPath。内因是:  java.security.cert.CertPathValidatorException: CN = GlobalSign根CA,OU =根CA,O = GlobalSign nv-sa,C = BE颁发的证书不受信任;内因是:  java.security.cert.CertPathValidatorException:证书链错误 * 在我的本地服务器中导入签署者证书后(如此链接http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.base.doc%2Finfo%2Faes%2Fae%2Ftsec_sslretrievesignersport.html中所述),我能够连接到远程服务器(通过https部署服务)。 我可以通过java代码执行相同的操作而无需导入签署者证书吗?

1 个答案:

答案 0 :(得分:1)

你没有。您无法导入旨在通过您尝试验证其安全性的连接验证连接安全性的数据。这没有意义。证书必须离线导入。否则你只是在制造安全漏洞。