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 コマンドで使用されるパラメーターの説明は次のとおりです。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"Expand パラメーター 説明 -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.cakeytool -importcert -alias jboss -keystore server.keystore -file server.crt証明書が正常にインポートされたことをテストします。
以下のコマンドを実行し、プロンプトが表示されたらキーストアのパスワードを入力します。キーストアの内容が表示され、証明書はリストに含まれます。keytool -list -keystore server.keystore
結果
署名済み証明書はキーストアに含まれ、HTTPS Web サーバー通信を含む SSL 接続を暗号化するために使用できます。