来自Java客户端的SSL连接

Mar*_*nio 6 java ssl https tomcat

我正在创建一个Java客户端程序,它将敏感信息发送到Tomcat服务器.所以我需要使用SSL连接,以便加密信息.

我需要使用自签名的不受信任的证书,但是在从java客户端建立连接时遇到问题.

我已成功设置Tomcat 5.5以使用SSL并通过Firefox进行测试,Firefox会显示自签名证书的警告.

我遵循Tomcat 5.5 SSL设置,他们提到创建一个密钥库:

keytool -genkey -alias tomcat -keyalg RSA

然后我做了上面的导出:

keytool -export -keystore .keystore -alias tomcat -file localhost.cer

然后我将上述证书导入客户端机器:

keytool -import -alias tomcat -file localhost.cer -keystore "C:\Program Files"\Java\jdk1.6.0_17\jre\lib\security\cacerts"

但是在运行客户端时,我得到:

线程"main"中的异常javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径

这是客户端代码:

URL url = new URL("https://localhost:8443");
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setSSLSocketFactory(sslsocketfactory);
InputStream inputstream = conn.getInputStream();
Run Code Online (Sandbox Code Playgroud)

现在我刚刚开始玩这些证书而且我是密钥库的新手,所以请耐心等待.

有人可以解释如何导出和导入Tomcat中创建的证书到客户端机器?

谢谢.

Tho*_*sen 1

Atlassian 对于如何解决这个问题有很好的说明。

http://confluence.atlassian.com/display/JIRA/Connecting+to+SSL+services

另一种方法是安装不太严格的证书验证器,但这只能作为最后的手段。