Я написал клиент webservice и теперь не могу заставить его работать через https. Хотя я импортировал cert.pfx (alias = cert) в javas cacerts и успешно добавил запись с псевдонимом certs.импортировал сертификат.pfx в cacerts и все еще получал ошибку «PKIX ... не удалось найти допустимый путь сертификации к запрашиваемой цели». Что?
Тем не менее я не могу использовать приглашение wsimport на URL-адрес wsdl. В нем говорится: «Путь к PKIX не смог найти правильный путь сертификации для запрошенной цели. Ну ладно. Поэтому я немного исследовал и попытался установить его с помощью
setlocal set _JAVA_OPTIONS=%_JAVA_OPTIONS% -Djavax.net.ssl.trustStore="C:\Program Files\Java\jdk1.7.0_79\jre\lib\security\cacerts" -Djavax.net.ssl.trustStorePassword=changeit -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=xxxxxxxxx -Djavax.net.ssl.keyStore="d:\cert.pfx" "C:\Program Files\Java\jdk1.7.0_79\bin\wsimport" -s C:\Users\me\keystore\bin\s -keep https://service.xxxxxxxxxxx.de/xxxxxxxxxxxxTest?wsdl endlocal
не имеет успеха.
Я также попытался экспортировать сертификат из файла cert.pfx, а затем импортировал сертификат в cacerts через keytool -exportcert и keytool -importcert. Позже я попытался экспортировать сертификаты из своего браузера (потому что мой браузер отлично справляется с сертификатами и может получить доступ к URL-адресу https). Я экспортировал корневой сертификат в файл root.cer и импортировал этот .cer в мои cacerts (мне пришлось использовать другой псевдоним, кроме сертификата. С сертификатом as alias у меня появилось сообщение «Keys not matching» в консоли при использовании keytool незамедлительный).
Дамп на cacerts показывает, что действительно есть запись в cacerts. Я не понимаю, почему Java отказывается делать wsimport по URL-адресу.
В конце концов я только что загрузил адресат url на свою машину и сделал wsimport в загруженном XML-файле, а затем изменил параметры url в сгенерированных заглушках. Не помогает, потому что когда я запускаю приложение im, запущенное в «PKIX ... неспособный найти допустимый путь сертификации к запрашиваемой цели».
ли это веб-сервисы, которые требуют аутентификации клиента? Каково хранилище, которое вы используете с параметром -Djavax.net.ssl.keyStore? Кроме того, вы пытались получить цепочку сертификатов сервера с помощью инструмента командной строки openSSL? –
Я попробую предложение openSSL. Кроме того, каково хранилище ключей, которое я должен использовать с djavax.net.ssl.keystore. Я использовал файл cert.pfx. Я также попытался оставить его и использовать только truststore -Djavax.net.ssl.trustStore = путь к моим cacerts. Разве это не избыточно? Arent im должен использовать enviromentvariables, когда я хочу, чтобы Java явно загружала что-то еще, чем его cacerts? –
У меня есть что-то для запуска. Я экспортировал корневой сертификат из Chrome-браузера (щелкните правой кнопкой мыши в браузере и нажмите «показать информацию о сайте» -> соединения -> показать сертификаты -> правая регистрационная карточка (выбрать корневой сертификат) -> средняя регистрационная карточка-> копировать в файл-> создать .cer), затем я импортировал его в cacerts. Впоследствии я смог сделать wsimport на wsdl-url, а также запустить моего клиента против сервера. (Хотя у меня были ошибки таймаута http) –