У меня есть приложение, которое сохраняет данные хранилища ключей и сертификатов в собственной базе данных и создает SSLContext
с хранилищами ключей и трастовых хранилищ из данных базы данных.
Я хочу написать Unit-Test, который создает SSL-соединение с использованием предоставленного SSLContext
, но я получаю InvalidAlgorithmParameterException
, когда пытаюсь.Вся информация, связанная с этой ошибкой, которую я нашел до сих пор, приводит к замене или объявлению пути к файлу jdk cacerts
.Насколько я понимаю, в моем случае, поскольку мои сертификаты, хранилища ключей и доверенные хранилища находятся в памяти после загрузки из базы данных, файл, в котором хранится такая информация, не может быть причиной моей проблемы.
Есть ли какая-нибудь обычная проблема с root при возникновении этого исключения?Пока я знаю только, что где-то что-то не так, что не очень хорошее начало.
Мой код выглядит следующим образом:
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 / сертификатов.