Для начала, я довольно новичок в реализации 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 для тестирования двусторонней аутентификации, он доступен только для односторонней аутентификации?
я понимаю, что это много вопрос для одного поста, но каждая помощь / ссылка / документация будет действительно оценена. Большое спасибо!