JKS形式のキーストアがあり、それをApache2で使用したい。キーと証明書(すでにチェーンされている)をJKSから簡単な方法でエクスポートするにはどうすればよいですか?私はそこに多くの答えを見つけましたが、誰も私の問題を抱えていないようです...(または答えは部分的です)
お時間をいただきありがとうございます。
JKSにはDERに証明書があり、ApacheにはPEM(AKA X509)形式が必要です。
これを行う方法のサンプル:
$Java_HOME/bin/keytool --list -keystore <mykeystore>
$Java_HOME/bin/keytool -export -rfc -alias <alias_name> -file <cert.crt> -keystore <mykeystore>
したがって、秘密鍵をエクスポートしてから証明書をエクスポートする必要があります。
エクスポートされた秘密鍵は、httpd.confのSSLCertificateKeyFileディレクティブに配置され、SSLCertificateChainFileディレクティブにチェーンされた証明書を配置できます。これはSSLCertificateFileディレクティブに追加されます。
Keytoolを使用してJKSから直接秘密鍵を取得することはできません。代わりに、まずPKCS12形式に変換してから、opensslコマンドを使用する必要があります。私はこの仕事をしました:
Keytoolを使用してキーストアをpkcs12に変換する
keytool -importkeystore -srckeystore jks_filename.jks -destkeystore p12_filename.p12 -deststoretype PKCS12
Opensslを使用して、証明書を.pemファイルとしてエクスポートします。
openssl pkcs12 -in p12_filename.p12 -nokeys -clcerts -out cert_filename.pem
Opensslを使用して、対応する秘密鍵を.pemファイルとしてエクスポートします。
openssl pkcs12 -in p12_filename.p12 -nocerts -out key_filename.pem
2つの場所(SSLCertificateFileとSSLCertificateKeyFile)でssl.confを更新して、これらの証明書と鍵ファイルを使用するようにポート443を構成します。
証明書以外のものを「直接」エクスポートする方法はありません。 PKCS12形式で中間ステップを実行する必要があります。
keytool -importkeystore -srckeystore rec.jks -destkeystore rec.p12 -deststoretype PKCS12
これにより、ソースと宛先のパスフレーズの入力を求められます。これを自動化する必要がある場合は、PW=somepass keytool -srcpass:env PW ...
またはkeytool -srcstorepass:file filecontainingpass ...
、および-deststorepass
そしてそこから、opensslを使用してPKCS12ファイルを標準のPEMに変換できます。
openssl pkcs12 -in rec.p12 -out rec.pem
これもパスフレーズの入力を求めます。使用する -passin env:PW
または-passin file:filename
および-passout
オプション、または-nodes
結果のキーを暗号化したくない場合は、これを書き込む場所に注意してください。
結果のファイルには、キー、証明書、およびおそらく完全な証明書チェーンが含まれます。