A.5. 独自の証明書の作成
概要
この章では、独自のプライベート認証局 (CA) を設定し、この CA を使用して独自の証明書を生成および署名するための手法と手順について説明します。
独自の証明書を作成および管理するには、セキュリティーに関する専門知識が必要です。この章で説明する手順を使用すると、デモンストレーションおよびテスト環境用に独自の証明書を手軽に生成できますが、実稼働環境でこれらの証明書を使用することは お勧めしません。
A.5.1. OpenSSL ユーティリティーのインストール リンクのコピーリンクがクリップボードにコピーされました!
RHEL および Fedora プラットフォームへの OpenSSL のインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux (RHEL) 5 と 6、および Fedora プラットフォームでは、RPM パッケージとして利用できます。OpenSSL をインストールするには、次のコマンドを入力します (管理者権限で実行)。
yum install openssl
yum install openssl
ソースコードのディストリビューション リンクのコピーリンクがクリップボードにコピーされました!
OpenSSL のソースディストリビューションは、http://www.openssl.org/docs にあります。OpenSSL プロジェクトは、ソースコードのディストリビューション のみ て提供しています。OpenSSL Web サイトから OpenSSL ユーティリティーのバイナリーインストールをダウンロードすることはできません。
A.5.2. プライベート認証局の設定 リンクのコピーリンクがクリップボードにコピーされました!
概要 リンクのコピーリンクがクリップボードにコピーされました!
プライベート CA を使用する場合は、アプリケーションで使用する独自の証明書を生成する必要があります。OpenSSL プロジェクトは、プライベート CA を設定し、署名付き証明書を作成し、CA を Java キーストアに追加するための無料コマンドラインユーティリティーを提供します。
実稼働環境用にプライベート CA を設定するには、高度な専門知識が必要であり、外部の脅威から証明書ストアを保護するために特別な注意を払う必要があります。
プライベート認証局の設定手順 リンクのコピーリンクがクリップボードにコピーされました!
独自のプライベート認証局を設定するには、以下を実行します。
次のように、CA のディレクトリー構造を作成します。
X509CA/demoCA X509CA/demoCA/private X509CA/demoCA/certs X509CA/demoCA/newcerts X509CA/demoCA/crl
X509CA/demoCA X509CA/demoCA/private X509CA/demoCA/certs X509CA/demoCA/newcerts X509CA/demoCA/crl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow テキストエディターを使用して、
X509CA/openssl.cfg
ファイルを作成し、以下の内容をこのファイルに追加します。例A.1 OpenSSL 設定
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要前述の
openssl.cfg
設定ファイルは、デモンストレーションとしてのみ提供されます。実稼働環境では、この設定ファイルは、高度なセキュリティー専門知識を持つエンジニアが慎重に作成し、進化するセキュリティーの脅威から保護するために積極的に保守する必要があります。demoCA/serial
ファイルを初期化します。このファイルには、初期のコンテンツ01
が必要です。以下のコマンドを入力します。echo 01 > demoCA/serial
echo 01 > demoCA/serial
Copy to Clipboard Copied! Toggle word wrap Toggle overflow demoCA/index.txt
を初期化します。最初は空である必要があります。以下のコマンドを入力します。touch demoCA/index.txt
touch demoCA/index.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを使用して、新しい自己署名 CA 証明書と秘密鍵を作成します。
openssl req -x509 -new -config openssl.cfg -days 365 -out demoCA/cacert.pem -keyout demoCA/private/cakey.pem
openssl req -x509 -new -config openssl.cfg -days 365 -out demoCA/cacert.pem -keyout demoCA/private/cakey.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例A.2「CA 証明書の作成」 に示されるとおり、CA 秘密鍵のパスフレーズと CA 識別名の詳細の入力を求められます。
例A.2 CA 証明書の作成
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記CA のセキュリティーは、秘密鍵ファイルと、この手順で使用する秘密鍵のパスフレーズによって異なります。
CA 証明書と秘密鍵 (
cacert.pem
およびcakey.pem
) のファイル名と場所が、openssl.cfg
で指定した値と同じであることを確認してください (前述の手順を参照)。
A.5.3. CA トラストストアファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
概要 リンクのコピーリンクがクリップボードにコピーされました!
サーバーの ID を確認するために、SSL/TLS 接続のクライアント側でトラストストアファイルが一般的に必要です。トラストストアファイルを使用して、デジタル署名を確認することもできます (たとえば、トラストストアファイル内の信頼できる証明書の 1 つに対応する秘密鍵を使用して署名が作成されたことを確認する)。
CA トラストストアの作成手順 リンクのコピーリンクがクリップボードにコピーされました!
1 つ以上の CA 証明書をトラストストアファイルに追加するには、以下を実行します。
デプロイする信頼される CA 証明書のコレクションをアセンブルします。
信頼できる CA 証明書は、パブリック CA またはプライベート CA から取得できます。信頼できる CA 証明書は、Java
keystore
ユーティリティー (例: PEM 形式) と互換性のある任意の形式にすることができます。必要なのは証明書だけです。秘密鍵とパスワードは 必要ありません。keytool -import
コマンドを使用して、CA 証明書をトラストストアに追加します。以下のコマンドを入力して、PEM 形式の CA 証明書
cacert.pem
を JKS トラストストアに追加します。keytool -import -file cacert.pem -alias CAAlias -keystore truststore.ts -storepass StorePass
keytool -import -file cacert.pem -alias CAAlias -keystore truststore.ts -storepass StorePass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow truststore.ts
は、CA 証明書が含まれるキーストアファイルです。このファイルが存在しない場合は、keytool
コマンドにより作成されます。CAAlias
は、インポートされた CA 証明書の便利な識別子です。StorePass
はキーストアファイルへのアクセスに必要なパスワードです。- 前の手順を繰り返して、すべての CA 証明書をトラストストアに追加します。
A.5.4. 新しい証明書の生成と署名 リンクのコピーリンクがクリップボードにコピーされました!
概要 リンクのコピーリンクがクリップボードにコピーされました!
証明書を実用するためには、証明書の信頼性を保証する CA によって署名されている必要があります。これにより、単一の CA 証明書を使用して多数の証明書を検証できるため、証明書検証のスケーラブルなソリューションが容易になります。
新しい証明書の生成および署名手順 リンクのコピーリンクがクリップボードにコピーされました!
独自のプライベート CA を使用して新しい証明書を生成し、署名するには、次の手順を実行します。
以下のように、
keytool -genkeypair
コマンドを使用して、証明書と秘密鍵のペアを生成します。keytool -genkeypair -keyalg RSA -dname "CN=Alice, OU=Engineering, O=Red Hat, ST=Dublin, C=IE" -validity 365 -alias alice -keypass KeyPass -keystore alice.ks -storepass StorePass
keytool -genkeypair -keyalg RSA -dname "CN=Alice, OU=Engineering, O=Red Hat, ST=Dublin, C=IE" -validity 365 -alias alice -keypass KeyPass -keystore alice.ks -storepass StorePass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定のキーストア
alice.ks
はコマンドを実行する前に存在していなかったため、暗黙的に新しいキーストアが作成され、パスワードがStorePass
に設定されます。-dname
および-validity
フラグは、新たに作成された X.509 証明書の内容を定義します。注記証明書の識別名 (
-dname
パラメーターを使用した) を指定する場合は、openssl.cfg
ファイルで指定されたポリシー制約を必ず守る必要があります。これらのポリシー制約に従わない場合は、(次の手順で) CA を使用して証明書に署名することはできません。注記-keyalg RSA
オプション (または同様の強度の鍵アルゴリズム) を使用してキーペアを生成することが不可欠です。デフォルトのキーアルゴリズムは、DSA 暗号化と SHA-1 署名の組み合わせを使用します。しかし、SHA-1 アルゴリズムは十分にセキュアであるとはみなされなくなっており、最新の Web ブラウザーは SHA-1 を使用して署名された証明書を拒否します。RSA 鍵アルゴリズムを選択すると、keytool
ユーティリティーは代わりに SHA-2 アルゴリズムを使用します。keystore -certreq
コマンドを使用して、証明書署名要求を作成します。以下のように、
alice.ks
証明書の新規の証明書署名要求を作成し、alice_csr.pem
ファイルにエクスポートします。keytool -certreq -alias alice -file alice_csr.pem -keypass KeyPass -keystore alice.ks -storepass StorePass
keytool -certreq -alias alice -file alice_csr.pem -keypass KeyPass -keystore alice.ks -storepass StorePass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl ca
コマンドを使用して CSR に署名します。次のように、プライベート CA を使用して Alice 証明書の CSR に署名します。
openssl ca -config openssl.cfg -days 365 -in alice_csr.pem -out alice_signed.pem
openssl ca -config openssl.cfg -days 365 -in alice_csr.pem -out alice_signed.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 「プライベート認証局の設定手順」 で CA 作成した際に使用した CA 秘密鍵パスフレーズを入力するように求められます。
openssl ca
コマンドについての詳細は、http://www.openssl.org/docs/apps/ca.html# を参照してください。-outform
オプションがPEM
に設定されたopenssl x509
コマンドを使用して、署名付き証明書を PEM 専用形式に変換します。以下のコマンドを入力します。openssl x509 -in alice_signed.pem -out alice_signed.pem -outform PEM
openssl x509 -in alice_signed.pem -out alice_signed.pem -outform PEM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CA 証明書ファイルと変換された署名付き証明書ファイルを連結し、証明書チェーンを形成します。たとえば、Linux および UNIX プラットフォームでは、以下のように CA 証明書ファイルと署名済み Alice 証明書
alice_signed.pem
を連結できます。cat demoCA/cacert.pem alice_signed.pem > alice.chain
cat demoCA/cacert.pem alice_signed.pem > alice.chain
Copy to Clipboard Copied! Toggle word wrap Toggle overflow keytool -import
コマンドを使用して、新しい証明書の完全な証明書チェーンを Java キーストアにインポートします。以下のコマンドを入力します。keytool -import -file alice.chain -keypass KeyPass -keystore alice.ks -storepass StorePass
keytool -import -file alice.chain -keypass KeyPass -keystore alice.ks -storepass StorePass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow