Назад | Перейти на главную страницу

Как я могу использовать сертификат SSL, созданный с помощью Java keytool, с Nginx?

Я использовал Java keytool для создания «хранилища ключей»:

keytool -genkey -alias example.com -keyalg RSA -keystore example.com.keystore

Затем я создал CSR (запрос на подпись сертификата):

keytool -certreq -keyalg RSA -alias example.com -file example.com.csr
-keystore example.com.keystore

Затем я выпустил сертификат и сохранил его в текстовом файле. example.com.crt

Теперь я хочу использовать этот сертификат с Nginx.

Я разместил свой сертификат на /etc/ssl/certs/example.com.cert и я разместил свое «хранилище ключей» (я думаю, что он содержит мой закрытый ключ?) на /etc/ssl/private/example.com.keystore

Затем я настроил свой Nginx следующим образом Nginx, SSL и vhosts. Но когда я перезагружаю файл конфигурации Nginx, я получаю следующее сообщение об ошибке:

sudo service nginx reload
Reloading nginx configuration: [emerg]: SSL_CTX_use_certificate_chain_file("/etc/ssl/certs/myssl.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib)
configuration file /etc/nginx/nginx.conf test failed

Когда я последовал тому же руководству и сгенерировал SSL-сертификат, используя openssl он работал нормально. Но с помощью Java keytool я получаю эту ошибку.

Как я могу использовать SSL-сертификат и ключи из Java Keytool с Nginx?

Насколько я знаю, вы не можете использовать хранилище ключей с чем-либо, написанным не на Java. Также невозможно извлечь ключ с помощью keytool.

Я бы рекомендовал использовать что-то вроде http://www.openssl.org/docs/HOWTO/keys.txt или easy-rsa-tools, включенные в OpenVPN, для генерации новой комбинации ключа / сертификата, которая по умолчанию будет сгенерирована в формате, читаемом nginx.

Если важно извлечь ключ из хранилища ключей, есть руководство по адресу http://conshell.net/wiki/index.php/Keytool_to_OpenSSL_Conversion_tips о том, как его извлечь.