如何在 Nginx 中使用通过 Java keytool 生成的 SSL 证书?

如何在 Nginx 中使用通过 Java keytool 生成的 SSL 证书?

我使用 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

然后我配置了我的 NginxNginx、SSL 和虚拟主机。但是当我重新加载 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 时,我收到此错误。

如何在 Nginx 中使用 Java keytool 中的 SSL 证书和密钥?

答案1

据我所知,您不能将密钥库用于任何非 Java 编写的内容。也无法使用 提取密钥keytool

我建议使用类似http://www.openssl.org/docs/HOWTO/keys.txteasy-rsa使用 OpenVPN 附带的工具来生成新的密钥/证书组合,默认情况下它将以 nginx 可读的格式生成。

如果从密钥库中提取密钥很重要,可以参阅以下指南:http://conshell.net/wiki/index.php/Keytool_to_OpenSSL_Conversion_tips如何提取它。

相关内容