Не удается найти действительный путь сертификации для запрашиваемой целевой Google Recaptcha в приложении Java Maven
Я создал веб-приложение Maven с контактной формой с помощью Google reCaptcha v3, который работает на Glassfish 5 на сервере Centos. Страница контактной формы отправляет запрос на https://www.google.com/recaptcha/api/siteverify и отправляет токен и ключ сайта. Вы получите объект json, отвечающий на вопрос, если запрос поступил от бота или человека.
Когда Java отправляет этот запрос, я получил ошибку соединения:
sun.security.validator.ValidatorException: сбой построения пути PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации к запрошенной цели
Java или сервер Glassfish не доверяют веб-сайту, потому что у него нет действующего сертификата в хранилище ключей, как описано здесь.
Импорт сертификата с помощью keytool (/opt/jdk1.8.0_181/jre/bin/keytool) в /opt/jdk1.8.0_181/jre/lib/security/cacerts (хранилище ключей, в котором хранятся сертификаты) не работает.
1 ответ
В папке домена Glassfish (в моем случае это /home/glassfish/glassfish5/glassfish/domains/domain1) находится папка конфигурации с файлом cacerts.jks. Вы можете редактировать его с помощью keytool, но вы также можете редактировать его с помощью Keytool Explorer ( https://keystore-explorer.org/). Загрузите сертификат с помощью браузера, как объяснили ей. Вы можете скачать сертификат SSL-сервера как.crt. В моем случае это был wwwgooglecom.crt. Это легко импортировать с помощью инструмента Keystore выше. Загрузите файл cacerts.jks и перезапустите сервер Glassfish.