У меня есть сервер nginx, который может пересылать запросы с поддоменов ropi.io
. Я хочу защитить соединение с помощью SSL, поэтому я создал сертификат с именем ropi.pem
и добавил его как ssl_certificate
, так и ssl_certificate_key
, так как я его создал с OpenSSL, где и ключ, и сертификат были одним файлом.
Он отлично работает, когда клиенты браузера хотят подключиться к серверу, но в некоторых случаях мне действительно нужно подключиться к клиенту Java.Проблема в том, что Java Keystore не может импортировать файлы .pem
, поэтому я - снова с помощью OpenSSL - преобразовал их в формат .der
, который принимает Keystore.
Это, однако, не устраняет проблему, когда я все еще не могу подключиться к серверу с помощью Java-клиента, поскольку я получаю то же исключение sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенного целевого исключения
.
Существует ли общий формат, который Nginx и Java Keystore могут использовать и который также работает для доменов, CN и т. Д.?
Я новичок, когда дело доходит до сертификации SSL, но я полон решимости учиться, так что проявите ко мне терпение.
Я нашел решение: мне пришлось создать сертификат из ключевого файла с четко указанным доменом (он скажет, где он нужен при генерации).
Я использовал команда openssl req -x509 -sha256 -nodes -days 365 -key ../nginx/ropi.pem -out certificate.crt
убедилась, что нужные файлы добавлены в правильное хранилище ключей, и я был все готово