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 の署名

以下のように CA を使用して 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 を繰り返し、システムの完全な証明書セットを作成します。