8.3. HTTPS/SSL の設定
Red Hat Single Sign-On は、SSL/HTTPS を処理するようにデフォルトで設定されていません。Red Hat Single Sign-On サーバー自体で SSL を有効にするか、Red Hat Single Sign-On サーバーの前のリバースプロキシーで SSL を有効にすることを強くお勧めします。
このデフォルトの動作は、各 Red Hat Single Sign-On レルムの SSL/HTTPS モードによって定義されます。詳細は、サーバー管理ガイド で詳しく説明していますが、コンテキストとこれらのモードの概要を説明します。
- external requests
-
localhost、127.0.0.1、10.x.x.x,192.168.x.x、172.16.x.xなどのプライベート IP アドレスに限り、Red Hat Single Sign-On は SSL なしで追加できます。サーバーに SSL/HTTPS が設定されていない場合や、非プライベート IP アドレスから HTTP 経由で Red Hat Single Sign-On にアクセスしようとすると、エラーが発生します。 - none
- Red Hat Single Sign-On には SSL は必要ありません。これは、処理を実行し、この開発でのみ使用する必要があります。
- all requests
- Red Hat Single Sign-On では、すべての IP アドレスに SSL が必要です。
各レルムの SSL モードは、Red Hat Single Sign-On の管理コンソールで設定できます。
8.3.1. Red Hat Single Sign-On サーバーの SSL/HTTPS の有効化 リンクのコピーリンクがクリップボードにコピーされました!
リバースプロキシーまたはロードバランサーを使用して HTTPS トラフィックを処理する場合、Red Hat Single Sign-On サーバーの HTTPS を有効にする必要があります。以下が関与します。
- SSL/HTTP トラフィック用の秘密鍵と証明書が含まれるキーストアの取得または生成
- このキーペアと証明書を使用するように Red Hat Single Sign-On サーバーを設定します。
8.3.1.1. 証明書および Java キーストアの作成 リンクのコピーリンクがクリップボードにコピーされました!
HTTPS 接続を許可するには、Red Hat Single Sign-On サーバーをデプロイする Web コンテナーで HTTPS を有効にする前に、自己署名またはサードパーティーの署名済み証明書を取得し、Java キーストアにインポートする必要があります。
8.3.1.1.1. 自己署名証明書 リンクのコピーリンクがクリップボードにコピーされました!
開発時には、Red Hat Single Sign-On デプロイメントをテストするためのサードパーティーの署名済み証明書を持っていない場合がありますが、その場合、Java JDK に同梱される keytool ユーティリティーを使用して自己署名証明書を生成する必要があるでしょう。
What is your first and last name ? の質問が表示されたら、サーバーをインストールするマシンの DNS 名を提供します。テストの目的では、localhost を使用する必要があります。このコマンドを実行すると、keycloak.jks ファイルが keytool コマンドの実行と同じディレクトリーに生成されます。
サードパーティーの署名済み証明書が必要で、証明書がない場合は、cacert.org で無料の証明書を取得できます。ただし、最初に次の手順を使用する必要があります。
手順
証明書要求を生成します。
keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq
$ keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careqCopy to Clipboard Copied! Toggle word wrap Toggle overflow yourdomainは、この証明書が生成される DNS 名に置き換えます。keytool は要求を生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この CA 要求を認証局 (CA) に送信します。
CA は署名済み証明書を発行して送信します。
CA のルート証明書を取得してインポートします。
CA (root.crt) から証明書をダウンロードし、以下のようにインポートすることができます。
keytool -import -keystore keycloak.jks -file root.crt -alias root
$ keytool -import -keystore keycloak.jks -file root.crt -alias rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい CA が生成した証明書をキーストアにインポートします。
keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
$ keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3.1.2. キーストアを使用するように Red Hat Single Sign-On を設定する リンクのコピーリンクがクリップボードにコピーされました!
適切な証明書を持つ Java キーストアを利用したので、Red Hat Single Sign-On インストールを使用するように設定する必要があります。
手順
- キーストアを使用し、HTTPS を有効にするには、standalone.xml ファイル、standalone-ha.xml ファイル、または host.xml ファイルを編集する必要があります。
キーストアファイルをデプロイメントの configuration/ ディレクトリーに移動するか、選択した場所のファイルに移動して、そのファイルへの絶対パスを指定することができます。
絶対パスを使用している場合は、設定から任意の
relative-toパラメーターを削除します (操作モード を参照してください)。CLI を使用して新しい
security-realm要素を追加します。/core-service=management/security-realm=UndertowRealm:add() /core-service=management/security-realm=UndertowRealm/server-identity=ssl:add(keystore-path=keycloak.jks, keystore-relative-to=jboss.server.config.dir, keystore-password=secret)
$ /core-service=management/security-realm=UndertowRealm:add() $ /core-service=management/security-realm=UndertowRealm/server-identity=ssl:add(keystore-path=keycloak.jks, keystore-relative-to=jboss.server.config.dir, keystore-password=secret)Copy to Clipboard Copied! Toggle word wrap Toggle overflow ドメインモードを使用する場合、コマンドは
/host=<host_name>/接頭辞を使用するすべてのホストで実行する必要があります (すべてのホストでsecurity-realmを作成するため)。これは、ホストごとに繰り返す例です。/host=<host_name>/core-service=management/security-realm=UndertowRealm/server-identity=ssl:add(keystore-path=keycloak.jks, keystore-relative-to=jboss.server.config.dir, keystore-password=secret)
$ /host=<host_name>/core-service=management/security-realm=UndertowRealm/server-identity=ssl:add(keystore-path=keycloak.jks, keystore-relative-to=jboss.server.config.dir, keystore-password=secret)Copy to Clipboard Copied! Toggle word wrap Toggle overflow スタンドアロンまたはホスト設定ファイルでは、
security-realms要素は以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
スタンドアロンまたは各ドメイン設定ファイルで
security-realmのインスタンスを検索します。 作成したレルムを使用するように
https-listenerを変更します。/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=security-realm, value=UndertowRealm)
$ /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=security-realm, value=UndertowRealm)Copy to Clipboard Copied! Toggle word wrap Toggle overflow ドメインモードを使用している場合は、コマンドの前に
/profile=<profile_name>/で使用されている使用されるプロファイルを付けます。生成される要素である
server name="default-server"(subsystem xmlns="urn:jboss:domain:undertow:12.0"の子要素) には以下のスタンザを含める必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow