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
ユーティリティーを使用して自己署名証明書を生成する必要があります。
$ keytool -genkey -alias localhost -keyalg RSA -keystore keycloak.jks -validity 10950 Enter keystore password: secret Re-enter new password: secret What is your first and last name? [Unknown]: localhost What is the name of your organizational unit? [Unknown]: Keycloak What is the name of your organization? [Unknown]: Red Hat What is the name of your City or Locality? [Unknown]: Westford What is the name of your State or Province? [Unknown]: MA What is the two-letter country code for this unit? [Unknown]: US Is CN=localhost, OU=Keycloak, O=Test, L=Westford, ST=MA, C=US correct? [no]: yes
サーバーをインストールするマシンの DNS 名については、What is your first and last name ?
に回答する必要があります。テストの目的では、localhost
を使用する必要があります。このコマンドを実行すると、keycloak.jks
ファイルが keytool
コマンドの実行と同じディレクトリーに生成されます。
サードパーティーの署名済み証明書が必要で、証明書がない場合は、cacert.org で無料の証明書を取得できます。ただし、この作業を行う前に、まずセットアップする必要があります。
最初に証明書要求を生成します。
$ keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq
yourdomain
は、この証明書が生成される DNS 名に置き換えます。keytool は要求を生成します。
-----BEGIN NEW CERTIFICATE REQUEST----- MIIC2jCCAcICAQAwZTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1BMREwDwYDVQQHEwhXZXN0Zm9y ZDEQMA4GA1UEChMHUmVkIEhhdDEQMA4GA1UECxMHUmVkIEhhdDESMBAGA1UEAxMJbG9jYWxob3N0 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr7kck2TaavlEOGbcpi9c0rncY4HhdzmY Ax2nZfq1eZEaIPqI5aTxwQZzzLDK9qbeAd8Ji79HzSqnRDxNYaZu7mAYhFKHgixsolE3o5Yfzbw1 29RvyeUVe+WZxv5oo9wolVVpdSINIMEL2LaFhtX/c1dqiqYVpfnvFshZQaIg2nL8juzZcBjj4as H98gIS7khql/dkZKsw9NLvyxgJvp7PaXurX29fNf3ihG+oFrL22oFyV54BWWxXCKU/GPn61EGZGw Ft2qSIGLdctpMD1aJR2bcnlhEjZKDksjQZoQ5YMXaAGkcYkG6QkgrocDE2YXDbi7GIdf9MegVJ35 2DQMpwIDAQABoDAwLgYJKoZIhvcNAQkOMSEwHzAdBgNVHQ4EFgQUQwlZJBA+fjiDdiVzaO9vrE/i n2swDQYJKoZIhvcNAQELBQADggEBAC5FRvMkhal3q86tHPBYWBuTtmcSjs4qUm6V6f63frhveWHf PzRrI1xH272XUIeBk0gtzWo0nNZnf0mMCtUBbHhhDcG82xolikfqibZijoQZCiGiedVjHJFtniDQ 9bMDUOXEMQ7gHZg5q6mJfNG9MbMpQaUVEEFvfGEQQxbiFK7hRWU8S23/d80e8nExgQxdJWJ6vd0X MzzFK6j4Dj55bJVuM7GFmfdNC52pNOD5vYe47Aqh8oajHX9XTycVtPXl45rrWAH33ftbrS8SrZ2S vqIFQeuLL3BaHwpl3t7j2lMWcK1p80laAxEASib/fAwrRHpLHBXRcq6uALUOZl4Alt8= -----END NEW CERTIFICATE REQUEST-----
この ca 要求を CA に送信します。CA は署名済み証明書を発行して送信します。新しい証明書をインポートする前に、CA のルート証明書を取得してインポートする必要があります。CA (root.crt) から証明書をダウンロードし、以下のようにインポートすることができます。
$ keytool -import -keystore keycloak.jks -file root.crt -alias root
最後に、新しい CA が生成した証明書をキーストアにインポートします。
$ 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 インストールを使用するように設定する必要があります。最初に、キーストアファイルをデプロイメントの configuration/ ディレクトリーに移動し、standalone.xml、standalone-ha.xml、または domain.xml ファイルを編集してキーストアを使用し、HTTPS を有効にします。(操作 モード を参照してください)。
スタンドアロンまたはドメイン設定ファイルで security-realms
要素を検索し、以下を追加します。
<security-realm name="UndertowRealm"> <server-identities> <ssl> <keystore path="keycloak.jks" relative-to="jboss.server.config.dir" keystore-password="secret" /> </ssl> </server-identities> </security-realm>
要素 server name="default-server"
( サブシステム xmlns="urn:jboss:domain:undertow:4.0"
の子要素)を見つけ、以下を追加します。
<subsystem xmlns="urn:jboss:domain:undertow:4.0"> <buffer-cache name="default"/> <server name="default-server"> <https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/> ... </subsystem>