web-dev-qa-db-ja.com

Apache2およびtomcatで使用するためにJKSキーストアからキーを抽出します

JKS形式のキーストアがあり、それをApache2で使用したい。キーと証明書(すでにチェーンされている)をJKSから簡単な方法でエクスポートするにはどうすればよいですか?私はそこに多くの答えを見つけましたが、誰も私の問題を抱えていないようです...(または答えは部分的です)

お時間をいただきありがとうございます。

5
CappyT

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ディレクティブに追加されます。

を参照してくださいhttp://httpd.Apache.org/docs/2.2/mod/mod_ssl.html

7
Schrute

Keytoolを使用してJKSから直接秘密鍵を取得することはできません。代わりに、まずPKCS12形式に変換してから、opensslコマンドを使用する必要があります。私はこの仕事をしました:

  1. Keytoolを使用してキーストアをpkcs12に変換する

    keytool -importkeystore -srckeystore jks_filename.jks -destkeystore p12_filename.p12 -deststoretype PKCS12

  2. Opensslを使用して、証明書を.pemファイルとしてエクスポートします。

    openssl pkcs12 -in p12_filename.p12 -nokeys -clcerts -out cert_filename.pem

  3. Opensslを使用して、対応する秘密鍵を.pemファイルとしてエクスポートします。

    openssl pkcs12 -in p12_filename.p12 -nocerts -out key_filename.pem

  4. 2つの場所(SSLCertificateFileとSSLCertificateKeyFile)でssl.confを更新して、これらの証明書と鍵ファイルを使用するようにポート443を構成します。

3
em_bo

証明書以外のものを「直接」エクスポートする方法はありません。 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結果のキーを暗号化したくない場合は、これを書き込む場所に注意してください。

結果のファイルには、キー、証明書、およびおそらく完全な証明書チェーンが含まれます。

2
Chris Cogdon