4.7. SSL 暗号化キーおよび証明書の生成
SSL で暗号化された HTTP 接続(HTTPS)や、その他のタイプの SSL で暗号化された通信を使用するには、署名済み暗号化証明書が必要です。認証局(CA)から証明書を購入するか、自己署名証明書を使用できます。自己署名証明書は、多くのサードパーティーが信頼しているとは見なされませんが、内部テストの目的で適しています。
この手順を実行すると、Red Hat Enterprise Linux で利用可能なユーティリティーを使用して自己署名証明書を作成できます。
前提条件
- Java Development Kit 実装によって提供される keytool ユーティリティーが必要です。Red Hat Enterprise Linux の OpenJDK は、このコマンドを
/usr/bin/keytool
にインストールします。 - keytool コマンドの構文とパラメーターを理解します。この手順では、SSL 証明書または
keytool
コマンドの詳細な説明は本書の対象外であるため、非常に一般的な手順を使用します。
手順4.5 SSL 暗号化キーおよび証明書の生成
パブリックキーおよびプライベートキーとともにキーストアを生成します。<remark>Bugzilla のバグの内容を反映済み</remark>
以下のコマンドを実行して、現在のディレクトリーにエイリアスjboss
が含まれるserver.keystore
という名前のキーストアを生成します。keytool -genkeypair -alias jboss -keyalg RSA -keystore server.keystore -storepass mykeystorepass --dname "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,S=NC,C=US"
この keytool コマンドで使用されるパラメーターの説明は次のとおりです。パラメーター 説明 -genkeypair
公開鍵と秘密鍵が含まれるキーペアを生成する keytool コマンド。 -alias
キーストアのエイリアス。この値は任意ですが、エイリアス jboss
は JBoss Web サーバーによって使用されるデフォルトです。-keyalg
キーペア生成アルゴリズム。この場合、これは RSA
です。-keystore
キーストアファイルの名前および場所。デフォルトの場所は、現在のディレクトリーです。選択する名前は任意です。この場合、ファイルの名前は server.keystore
になります。-storepass
このパスワードは、鍵を読み取りできるようにキーストアに対して認証するために使用されます。パスワードは 6 文字以上である必要があります。パスワードは、キーストアへのアクセス時に入力する必要があります。この例では、 mykeystorepass
を使用しています。このパラメーターを省略すると、コマンドの実行時に入力が求められます。-keypass
実際の鍵のパスワードです。注記実装の制限により、ストアと同じパスワードを使用する必要があります。--dname
キーの識別名を記述する引用符で囲まれた文字列(例: "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,C=US")。この文字列は、以下のコンポーネントを連結したものです。 CN
: 共通名またはホスト名。ホスト名が "jsmith.mycompany.com" の場合、CN
は jsmith になります。OU
- 組織単位(例: Engineering)O
- 組織名(例: mycompany.com)。- l - ローカリティー(例: Raleigh または「London」)
- s - "NC" など、状態または
提案
について参照してください。このパラメーターは任意です。 c
- 2 文字の国コード。たとえば、「US」または「UK」です。
上記のコマンドを実行すると、次の情報が要求されます。- コマンドラインで
-storepass
パラメーターを使用しなかった場合は、キーストアパスワードを入力するように求められます。次のプロンプトで新しいパスワードを再入力します。 - コマンドラインで
-keypass
パラメーターを使用しない場合は、キーパスワードを入力するように求められます。Enter を押して、キーストアパスワードと同じ値に設定します。
コマンドが完了すると、ファイルserver.keystore
にエイリアスjboss
のある単一のキーが含まれるようになりました。鍵を確認します。
以下のコマンドを使用して、キーが正常に動作することを検証します。keytool -list -keystore server.keystore
キーストアパスワードの入力が求められます。キーストアの内容が表示されます(この場合は、jboss
と呼ばれる単一のキー)。jboss
キーのタイプ(PrivateKeyEntry
)に注目してください。これは、キーストアにこのキーのパブリックおよびプライベートエントリーの両方が含まれることを示します。証明書の署名要求を生成します。
次のコマンドを実行し、手順 1 で作成したキーストアより公開鍵を使用して証明書署名要求を生成します。keytool -certreq -keyalg RSA -alias jboss -keystore server.keystore -file certreq.csr
キーストアに対して認証を行うためにパスワードが要求されます。次に、keytool
コマンドは、現在の作業ディレクトリーにcertreq.csr
という新しい証明書署名要求を作成します。新しく生成された証明書署名要求をテストします。
以下のコマンドを使用して証明書の内容をテストします。openssl req -in certreq.csr -noout -text
証明書の詳細が表示されます。オプション: 証明書署名要求を認証局 (CA) に送信します。
認証局(CA)は証明書を認証できるため、サードパーティークライアントが信用できると見なされます。CA は署名済み証明書を提供し、必要に応じて 1 つ以上の中間証明書を提供します。オプション: キーストアからの自己署名証明書のエクスポート
テストまたは内部目的でのみ必要な場合は、自己署名証明書を使用できます。以下のように、手順 1 で作成したキーストアからエクスポートできます。keytool -export -alias jboss -keystore server.keystore -file server.crt
キーストアに対して認証を行うためにパスワードが要求されます。現在の作業ディレクトリーに、server.crt
という名前の自己署名証明書が作成されます。署名済み証明書を中間証明書とともにインポートします。
CA によって指示された順序で各証明書をインポートします。インポートする証明書ごとに、intermediate.ca
またはserver.crt
を実際のファイル名に置き換えます。証明書が個別のファイルとして提供されない場合は、各証明書に個別のファイルを作成し、その内容をファイルに貼り付けます。注記署名済み証明書および証明書キーは、有用なアセットです。サーバー間での転送方法に注意してください。keytool -import -keystore server.keystore -alias intermediateCA -file intermediate.ca
keytool -importcert -alias jboss -keystore server.keystore -file server.crt
証明書が正常にインポートされたことをテストします。
以下のコマンドを実行し、プロンプトが表示されたらキーストアのパスワードを入力します。キーストアの内容が表示され、証明書はリストに含まれます。keytool -list -keystore server.keystore
結果
署名済み証明書はキーストアに含まれ、HTTPS Web サーバー通信を含む SSL 接続を暗号化するために使用できます。