在涉及认证批准时,从Java中读取Url

时间:2016-07-07 14:32:27

标签: java url certificate

我正在从https链接中读取xml文本,如果我在浏览器中打开请求验证证书。

URL oracle = new URL(url); //url is a String
URLConnection yc = oracle.openConnection();
BufferedReader inputReader = new BufferedReader(new InputStreamReader(yc.getInputStream()));

我在inputReader的第3行收到IOException。我在一个简单的http链接上尝试了相同的代码,不需要认证,工作得很好。你知道我应该改变什么吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您没有包含异常的跟踪,但SSL服务器肯定拒绝连接,因为您没有使用证书进行身份验证。

您需要使用JVM上配置的客户端证书创建https连接。这称为双向SSL身份验证(请检查此tutorial

你需要

1)创建密钥库(PKCS12或JKS)并包含客户端证书的私钥

2)创建一个trustore(可以是同一个文件)并包含服务器证书的公钥

3)配置JVM以使用与该服务器的SSL连接中的密钥库和信任库。

-Djavax.net.ssl.keyStoreType=pkcs12
-Djavax.net.ssl.keyStore=client.p12
-Djavax.net.ssl.keyStorePassword=whatever
-Djavax.net.ssl.trustStoreType=jks
-Djavax.net.ssl.trustStore=client-truststore.jks
-Djavax.net.ssl.trustStorePassword=whatever

查看完整示例https://stackoverflow.com/a/1710543/6371459