Javaのkeytoolには、秘密鍵を含むX.509証明書をエクスポートする機能がありますか?
ユーザーが(秘密鍵を含む)証明書を生成し、それを署名ツールに提供するシナリオを検討しています。署名ツールは、証明書の秘密鍵を使用してターゲットファイルに署名します。最終的に、秘密鍵は証明書から削除され、証明書は配布用のターゲットファイルに添付されます。
まだコメントできないので、次のフォームを使用します。通常、秘密鍵を使用して証明書を格納するためにPKCS#12http ://en.wikipedia.org/wiki/PKCS#12を使用します。また、公開鍵と秘密鍵のペアをPCKS#8コンテナに保存し、証明書を個別に出荷することもできます。
興味があれば、PKCS#12ストレージ用のJavaコードサンプルがいくつかあると思います。
また、オープンソースのJava認証局EJBCA(http://www.ejbca.org/)は、例として最適なソースです。
キーとその署名付き証明書は、多くの場合、PKCS12 や Java の JKS などのキーストア コンテナーに格納されます。Apache HTTPD などのアプリで使用するために、証明書とキーを PEM 形式のファイルに抽出することもできます。
JKS ファイルから証明書とキーを抽出するには、openssl で証明書を抽出する前に、PKCS12 形式のファイルに変換する必要があります。
keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.pkcs12 -deststoretype pkcs12
openssl pkcs12 -in keystore.pkcs12 -out mycert.crt -nokeys
openssl pkcs12 -in keystore.pkcs12 -out mykey.key -nocerts
生成された秘密鍵は、いかなる目的のためにも他人によって使用または共有されることはありません。私が知っている署名ツールは、独自の秘密鍵を使用して署名を生成し、公開鍵を証明します。たとえば、keytool を使用してキー ペアを生成し、CSR を CA に送信します。CA は独自の pvt キーを使用して、証明書に署名をスタンプします。
keytool (コマンドライン実行可能ファイル) には、秘密鍵をエクスポートするオプションがありません。ただし、JSA-API を使用してプログラムで実行することもできます (まだ試していません)。