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