我使用Java keytool来生成一个“keystore”:
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/certs/example.com.cert放置了我的“密钥库”(我认为它包含我的私钥?)
然后我configuration了Nginx, Nginx,SSL和vhosts 。 但是当我重新加载Nginx的configuration文件,我得到这个错误消息:
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
当我遵循相同的指南,并使用openssl生成SSL证书,它工作正常。 但使用Java的keytool我得到这个错误。
我如何使用Nginx的Java密钥工具使用SSL证书和密钥?
据我所知,你不能用任何非Java写的密钥库。 用keytool提取密钥也是不可能的。
我build议使用http://www.openssl.org/docs/HOWTO/keys.txt或OpenVPN中包含的easy-rsa tools来生成一个新的密钥/证书组合,默认情况下会生成采用nginx可读的格式。
如果从密钥库中提取密钥非常重要,那么在http://conshell.net/wiki/index.php/Keytool_to_OpenSSL_Conversion_tips上有关于如何提取密钥的指南。