Я использовал 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 о том, как его извлечь.