创建SSL连接:InvalidAlgorithmParameterException

时间:2019-01-21 16:52:23

标签: java ssl java-8 ssl-certificate httpurlconnection

我有一个现有的应用程序,该应用程序将密钥库和证书数据保存在自己的数据库中,并使用数据库数据之外的密钥库和信任库创建一个SSLContext

我想编写一个使用提供的SSLContext创建SSL连接的单元测试,但是在尝试时确实得到了InvalidAlgorithmParameterException。到目前为止,我发现的所有与该错误有关的信息都会导致替换或声明jdk cacerts文件的路径。据我了解,由于我的证书,密钥库和信任库是从数据库中加载后的内存,因此存储此类信息的文件不会成为我的问题的原因。

引发此异常时,是否存在一些常见的根本问题?到目前为止,我只知道某个地方出了点问题,这不是一个好的开始。

我的代码如下:

SSLContext ctx = ...
HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
URL url = new URL("https://target-address");
HttpsURLConnection con = (HttpsURLConnection) url.openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy-address", 8080)));
con.getInputStream();

在最后一行抛出异常:

javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

到目前为止,我的设置是否正确?知道我必须在创建SSLContext时发现问题对我来说已经是一个胜利。对于使用SSL /证书创建连接的整个主题,我真的是一个新手。

0 个答案:

没有答案