Я безуспешно пытаюсь отладить эту ошибку.
По сути, я связываюсь с внешним приложением через мое приложение. Соединение установлено нормально, приложение связывается с моим приложением через URL обратного вызова, затем мне нужно отправить окончательную проверку внешнему приложению. Этот последний шаг не выполняется из-за исключения SSLHandShajeException.
javax. net .ssl.SSLHandshakeException: sun.security.validator.ValidatorException: сбой при построении пути PKIX: sun.security.provider.certpath. SunCertPathBuilderException: не удалось найти действительный путь сертификации для запрошенной цели
Я рассмотрел возможные причины и создал хранилище доверенных сертификатов с сертификатом внешнего приложения, выполнив следующие действия:
- загрузка цепочки сертификатов из браузера
- создание хранилища доверенных сертификатов с помощью
keytool -import -v -trustcacerts -alias mycert -file x_my_cert_location_x -keystore truststore
- добавление вышеуказанного trustore в мой файл setenv
- перезапустите мой экземпляр tomcat.
Это не решило проблему.
Я также добавил к сертификату файл cacert и то же самое к соединителю на сервере. Файл xml выглядит следующим образом:
<Connector port="${catalina.port.https}" server="Apache" protocol="HTTP/1.1"
SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS"
clientAuth="false"
connectionTimeout="20000"
compression="on"
compressionMinSize="200"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml"
enableLookups="false"
URIEncoding="UTF-8"
keystoreFile="my_store_location" keystorePass="myPwd"/>
Debuggi В SSL я вижу:
> %% Invalidated: [Session-15, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
> http-nio-8080-exec-9, SEND TLSv1.2 ALERT: fatal, description =
> certificate_unknown http-nio-8080-exec-9, WRITE: TLSv1.2 Alert, length
> = 2 [Raw write]: length = 7 0000: 15 03 03 00 02 02 2E ....... http-nio-8080-exec-9, called closeSocket() http-nio-8080-exec-9,
> handling exception: javax.net.ssl.SSLHandshakeException:
> sun.security.validator.ValidatorException: PKIX path building failed:
> sun.security.provider.certpath.SunCertPathBuilderException: unable to
> find valid certification path to requested target
Что не имеет для меня никакого смысла. Мое приложение на java 1.8.242. Любой совет по этому поводу, пожалуйста?