Двухсторонняя аутентификация SSL: SSLExceptions (bad_certificate / невозможно найти действительный путь сертификации к запрошенной цели); не могу проверить через SoapUI - PullRequest
0 голосов
/ 27 марта 2020

Для начала, я довольно новичок в реализации SSL / TLS через java, но я много изучал, чтобы добраться до этого момента, и у меня есть почти четкое представление о всей архитектуре, хотя я Мне также нужны некоторые подтверждения, прежде чем я смогу добраться до проблемы java / soapUI.

Я пытаюсь реализовать двустороннюю аутентификацию для моего java spring-boot Soap WS, поэтому аутентификация которые требуют представления сертификата с обеих сторон о связи.


Прежде всего, я хочу уточнить генерацию хранилища ключей / доверенных сертификатов, которой я следовал, так что вы можете проверить, сделал ли я некоторые ошибка; с обеих сторон мне нужно хранилище ключей (связанное с парой ключей и сертификатом владельца) и доверенное лицо (связанное с сертификатом другой стороны, ключи не требуются, верно? хранилище доверенных сертификатов используется только для проверки сертификата, представленного с другой стороны; Я также открыл серверы jre, и я не могу найти ни один ключ, только доверенные сертификаты)

Я должен указать, что у меня есть доступ к среде CA, где я могу генерировать сертификат через запрос PKCS # 10, но поскольку это тестовая среда, она должна действовать как самоподписанный сертификат.

для генерации хранилища ключей / доверенных сертификатов, я использовал keytool:

keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore keystore_s.jks

с Создание PKCS # 10:

keytool -certreq -alias server -file csr.csr -keystore keystore_s.jks

с помощью .csr я могу запросить сертификат в ЦС и импортировать его в мое хранилище ключей (используя .p7b для всего сертификата) цепочка:

keytool -import -keystore keystore_s.jks -storepass password -alias server -file SaveCert_fromCA.p7b

(могу ли я импортировать сертификат только в хранилище ключей, сгенерировавшее этот .csr, так как сертификат проверен с использованием закрытого ключа)

получение хранилища ключей, например: snip * Explorer Explorer хранилища ключей

из этого хранилища ключей сервера. Я экспортирую сертификат CA root и помещаю его в клиентское хранилище, подумал:

keytool -import -keystore truststore_c.jks -storepass password -alias client -file CAroot_cer.cer -trustcacerts

получение хранилища доверенных сертификатов, например: Snip Explorer Keystore Explorer

(пожалуйста, игнорируйте второй сертификат, это был тест)

во всем этом я я не уверен в использовании псевдонима в этих запросах, это уникальное имя для сертификата + пары ключей, верно?


Так что я могу использовать эти два в SoapUI как Keystore и trustore (проект - > WS-Security Configuration-> Keystore / trustore) и в качестве хранилища ключей в моем запросе soap (Свойства запроса -> SSL Keystore)

В свойствах запроса я могу использовать как хранилище ключей, так и trustore, получая два другое исключение:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

и

javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate- Java Error

имейте в виду, что приложение работает (проверено в http) и разъем tomcat уже установлено (я получаю запрос на сертификат Эквивалент .wsdl из браузера).

еще одно сомнение, если я могу использовать SoapUI для тестирования двусторонней аутентификации, он доступен только для односторонней аутентификации?

я понимаю, что это много вопрос для одного поста, но каждая помощь / ссылка / документация будет действительно оценена. Большое спасибо!

...