2.5.3. CA を使用した Java キーストアでの署名証明書の作成
実行するサブステップ
Java キーストア (JKS) で証明書を作成して署名するには (CertName.jks
)、以下のサブステップを実行します。
Java bin ディレクトリーを PATH に追加します。
まだ追加していない場合は、Java の bin
ディレクトリーをパスに追加します。
Windows
> set PATH=JAVA_HOME\bin;%PATH%
UNIX
% PATH=JAVA_HOME/bin:$PATH; export PATH
この手順により、コマンドラインから keytool
ユーティリティーを利用できるようになります。
証明書と秘密鍵の生成
コマンドプロンプトを開き、キーストアファイル KeystoreDir を保存するディレクトリーに移動します。以下のコマンドを入力します。
keytool -genkey -dname "CN=Alice, OU=Engineering, O=Progress, ST=Co. Dublin, C=IE" -validity 365 -alias CertAlias -keypass CertPassword -keystore CertName.jks -storepass CertPassword
この keytool
コマンドは、-genkey
オプションで呼び出され、X.509 証明書とこれに一致する秘密鍵を生成します。証明書と鍵は、新規に作成されたキーストアの キーエントリー に配置されます (CertName.jks
)。指定のキーストア CertName.jks
はコマンドを発行する前に存在していなかったため、keytool
は暗黙的に新しいキーストアを作成します。
-dname
フラグおよび -validity
フラグは、新たに作成された X.509 証明書の内容を定義し、サブジェクト DN と有効期限までの日数をそれぞれ指定します。DN 形式の詳細は、付録A ASN.1 および識別名 を参照してください。
サブジェクト DN の一部は、CA 証明書の値に一致する必要があります (openssl.cnf
ファイルの CA ポリシーセクションで指定)。デフォルトの openssl.cnf
ファイルは、以下のエントリーと一致する必要があります。
- 国名 (C)
- 州または地区名 (ST)
- 組織名 (O)
制約に従わない場合、OpenSSL CA は証明書への署名を拒否します (「CSR の署名」 を参照)。
証明書署名リクエストの作成
以下のように、CertName.jks
証明書の新しい証明書署名要求 (CSR) を作成します。
keytool -certreq -alias CertAlias -file CertName_csr.pem -keypass CertPassword -keystore CertName.jks -storepass CertPassword
このコマンドは CSR をファイルにエクスポートします (CertName_csr.pem
)。
CSR の署名
openssl ca -config X509CA/openssl.cnf -days 365 -in CertName_csr.pem -out CertName.pem
証明書に正常に署名するには、CA 秘密鍵パスフレーズを入力する必要があります (「独自の CA の設定」 を参照)。
デフォルトの CA 以外 の CA 証明書を使用して CSR に署名する場合には、-cert
および -keyfile
オプションを使用して CA 証明書とその秘密鍵ファイルをそれぞれ指定します。
PEM 形式への変換
以下のように、署名済み証明書 (CertName.pem
) を PEM のみの形式に変換します。
openssl x509 -in CertName.pem -out CertName.pem -outform PEM
ファイルの連結
以下のように、CA 証明書ファイルと CertName.pem
証明書ファイルを連結します。
Windows
copy CertName.pem + X509CA\ca\new_ca.pem CertName.chain
UNIX
cat CertName.pem X509CA/ca/new_ca.pem> CertName.chain
完全な証明書チェーンでキーストアの更新
以下のように、証明書の完全な証明書チェーンをインポートして、キーストア CertName.jks
を更新します。
keytool -import -file CertName.chain -keypass CertPassword -keystore CertName.jks -storepass CertPassword
必要に応じて手順を繰り返します。
ステップ 2 から 7 を繰り返し、システムの完全な証明書セットを作成します。