我正在创建一个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中创建的证书导出和导入到客户机吗?
谢谢。
答案 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”输入密码。