web-dev-qa-db-ja.com

Java keytool with Nginxで生成された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に配置しました。

次に、 Nginx、SSL、vhosts に従ってNginxを構成しました。しかし、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

同じガイドに従い、opensslを使用してSSL証明書を生成したところ、正常に機能しました。しかし、Java keytoolを使用すると、このエラーが発生します。

NginxでJava keytoolのSSL証明書とキーを使用するにはどうすればよいですか?

3
Jonas

私の知る限り、Javaで書かれていないものだけでキーストアを使用することはできません。 keytoolでキーを抽出することもできません。

http://www.openssl.org/docs/HOWTO/keys.txt またはOpenVPNに含まれているeasy-rsa-toolsのようなものを使用して、新しいキー/証明書を生成することをお勧めします-combo。デフォルトでは、nginxで読み取り可能な形式で生成されます。

キーストアからキーを抽出することが重要な場合は、 http://conshell.net/wiki/index.php/Keytool_to_OpenSSL_Conversion_tips にキーの抽出方法に関するガイドがあります。

2
kvs