Я хочу вызывать некоторые веб-сервисы через соединение HTTPS в Java.Центр сертификации дал мне файл PKCS12, но я получил
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
из-за
javax.net.ssl.SSLHandshakeException
Вот код, который я выполняю:
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
System.setProperty("javax.net.ssl.keyStore", "path/toto2.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "pwd");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "path/toto2.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "pwd");
System.setProperty("proxySet","true") ;
System.setProperty("https.proxyHost", "XXX") ;
System.setProperty("https.proxyPort", "XXX") ;
Iсначала попытался выдать файл PKCS12, затем JKS, но у меня возникла та же ошибка.
Я попробовал другое решение с curl.Поэтому я извлек сертификаты из PKCS12 и успешно обработал запросы.
Вот команды, которые я использовал для извлечения различных файлов из P12:
openssl pkcs12 -in file.p12 -nocerts -nodes -out clientcert.key
openssl pkcs12 -in file.p12 -clcerts -nokeys -out clientcert.cer
openssl pkcs12 -in file.p12 -cacerts -nokeys -chain -out cacerts.cer
Я ошибаюсь в том, как яиспользовать эти файлы в Java?