7.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 モードによって定義されます。詳細は、サーバー 管理ガイド で説明されていますが、コンテキストとこれらのモードの概要について説明します。
- 外部要求
-
Red Hat Single Sign-On は、
localhost、127.0.0.1、10.x.x、などのプライベート IP アドレスにそのまま使用する限り、SSL なしですぐに実行できます。サーバーに SSL/HTTPS が設定されていない場合や、非プライベート IP アドレスから HTTP 経由で Red Hat Single Sign-On にアクセスしようとすると、エラーが発生します。192.168.x.x、および172.16.x.x - なし
- Red Hat Single Sign-On には SSL は必要ありません。これは、処理を実行し、この開発でのみ使用する必要があります。
- すべてのリクエスト
- Red Hat Single Sign-On では、すべての IP アドレスに SSL が必要です。
各レルムの SSL モードは、Red Hat Single Sign-On の管理コンソールで設定できます。
7.3.1. Red Hat Single Sign-On サーバーの SSL/HTTPS の有効化 リンクのコピーリンクがクリップボードにコピーされました!
リバースプロキシーまたはロードバランサーを使用して HTTPS トラフィックを処理する場合、Red Hat Single Sign-On サーバーの HTTPS を有効にする必要があります。以下が関与します。
- SSL/HTTP トラフィック用の秘密鍵と証明書が含まれるキーストアの取得または生成
- このキーペアと証明書を使用するように Red Hat Single Sign-On サーバーを設定します。
7.3.1.1. 証明書および Java キーストアの作成 リンクのコピーリンクがクリップボードにコピーされました!
HTTPS 接続を許可するには、Red Hat Single Sign-On サーバーをデプロイする Web コンテナーで HTTPS を有効にする前に、自己署名またはサードパーティーの署名済み証明書を取得し、Java キーストアにインポートする必要があります。
7.3.1.1.1. 自己署名証明書 リンクのコピーリンクがクリップボードにコピーされました!
開発時には、Red Hat Single Sign-On デプロイメントをテストするためにサードパーティーの署名済み証明書がなくても、Java JDK に同梱される keytool ユーティリティーを使用して自己署名証明書を生成する必要があります。
サーバーをインストールするマシンの DNS 名については、What is your first and last name ? に回答する必要があります。テストの目的では、localhost を使用する必要があります。このコマンドを実行すると、keycloak.jks ファイルが keytool コマンドの実行と同じディレクトリーに生成されます。
サードパーティーの署名済み証明書が必要で、証明書がない場合は、cacert.org で無料の証明書を取得できます。ただし、この作業を行う前に、まずセットアップする必要があります。
最初に証明書要求を生成します。
keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq
$ keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq
yourdomain は、この証明書が生成される DNS 名に置き換えます。keytool は要求を生成します。
この 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 root
最後に、新しい CA が生成した証明書をキーストアにインポートします。
keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
$ keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
7.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)
ドメインモードを使用する場合、コマンドは /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)
スタンドアロンまたはホスト設定ファイルでは、security-realms 要素は以下のようになります。
次に、スタンドアロンまたは各ドメイン設定ファイルで 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)
ドメインモードを使用している場合は、コマンドの前に /profile=<profile_name>/ で使用されている使用されるプロファイルを付けます。
結果の要素である server name="default-server" ( subsystem xmlns="urn:jboss:domain:undertow:6.0" の子要素)には、以下のスタンザが含まれている必要があります。