来自Java客户端的SSL连接

时间:2010-02-10 23:17:00

标签: java tomcat ssl https

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

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

我已成功设置Tomcat 5.5以使用SSL并通过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:无法找到所请求目标的有效证书路径< / p>

这是客户端代码:

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

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

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

谢谢。

3 个答案:

答案 0 :(得分:1)

Atlassian对如何解决这个问题有很好的指导。

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

另一种方法是安装较少的不可原谅的证书验证器,但这应该只作为最后的手段来完成。

答案 1 :(得分:0)

使用Apache HTTP Cleint jar并遵循此SSL Guide

EasySSLProtocolSocketFactory可用于创建SSL连接,允许目标服务器使用自签名证书进行身份验证。

答案 2 :(得分:0)

我认为您应该使用“changeit”输入密码。