Dispatcher での SSL の使用 using-ssl-with-dispatcher
Dispatcher とレンダリングコンピューター間には次の SSL 接続を使用します。
Dispatcher が AEM に接続するときに SSL を使用する use-ssl-when-dispatcher-connects-to-aem
Dispatcher が SSL 接続を使用して AEM または CQ レンダーインスタンスと通信するように設定します。
Dispatcher を設定する前に、SSL を使用するように AEM または CQ を設定します。詳しくは、次のセクションを参照してください。
SSL に関連する要求ヘッダー ssl-related-request-headers
HTTPS 要求を受信すると、Dispatcher は AEM または CQ に送信する、以降の要求に次のヘッダーを含めます。
X-Forwarded-SSL
X-Forwarded-SSL-Cipher
X-Forwarded-SSL-Keysize
X-Forwarded-SSL-Session-ID
Apache-2.4 と mod_ssl
を使用したリクエストには、次の例のようなヘッダーが含まれます。
X-Forwarded-SSL: on
X-Forwarded-SSL-Cipher: DHE-RSA-AES256-SHA
X-Forwarded-SSL-Session-ID: 814825E8CD055B4C166C2EF6D75E1D0FE786FFB29DEB6DE1E239D5C771CB5B4D
SSL を使用するように Dispatcher を設定する configuring-dispatcher-to-use-ssl
SSL 経由で AEM または CQ と接続するように Dispatcher を設定するには、dispatcher.any ファイルに以下のプロパティが必要です。
- HTTPS 要求を処理する仮想ホスト。
- 仮想ホストの
renders
セクションに、HTTPS を使用する CQ または AEM インスタンスのホスト名およびポートを識別するアイテムを含めます。 renders
アイテムには、secure
というプロパティ(値:1
)が含まれます。
メモ:必要に応じて、HTTP 要求を処理するための別の仮想ホストを作成してください。
次のサンプルの dispatcher.any
ファイルは、ホスト localhost
、ポート 8443
で動作している CQ インスタンスに HTTPS を使用して接続するためのプロパティ値を示したものです。
/farms
{
/secure
{
/virtualhosts
{
# select this farm for all incoming HTTPS requests
"https://*"
}
/renders
{
/0001
{
# hostname or IP of the render
/hostname "localhost"
# port of the render
/port "8443"
# connect via HTTPS
/secure "1"
}
}
# the rest of the properties are omitted
}
/non-secure
{
/virtualhosts
{
# select this farm for all incoming HTTP requests
"http://*"
}
/renders
{
/0001
{
# hostname or IP of the render
/hostname "localhost"
# port of the render
/port "4503"
}
}
# the rest of the properties are omitted
}
Dispatcher と AEM 間の相互 SSL の設定 configuring-mutual-ssl-between-dispatcher-and-aem
相互 SSL を使用するように、Dispatcher とレンダーコンピューター(一般的には AEM または CQ パブリッシュインスタンス)間の接続を設定します。
- Dispatcher が SSL 経由でレンダーインスタンスに接続します。
- レンダーインスタンスが Dispatcher の証明書の有効性を確認します。
- Dispatcher が、レンダーインスタンスの証明書の CA が信頼済みであることを確認します。
- (オプション)Dispatcher が、レンダーインスタンスの証明書がレンダーインスタンスのサーバーアドレスと一致することを確認します。
相互 SSL を設定するには、信頼済みの証明機関(CA)によって署名されている証明書が必要です。自己署名証明書では不十分です。証明書に署名するために、ユーザーが CA の役目を果たすことも、サードパーティ CA のサービスを利用することもできます。相互 SSL を設定するには、以下のアイテムが必要です。
- レンダーインスタンスおよび Dispatcher 用の署名済み証明書
- CA 証明書(ユーザーが CA の役割を果たす場合)
- CA、証明書および証明書要求を生成するための OpenSSL ライブラリ
相互 SSL を設定するには、次の手順を実行します。
- 使用するプラットフォームに適した最新バージョンの Dispatcher をインストールします。SSL をサポートしている Dispatcher バイナリを使用してください(SSL はファイル名に含まれています。例:
dispatcher-apache2.4-linux-x86-64-ssl10-4.1.7.tar
)。 - Dispatcher およびレンダーインスタンス用に CA 署名済みの証明書を作成または取得します。
- レンダーの証明書を格納したキーストアを作成し、レンダーの HTTP サービスを設定します。
- 相互 SSL 用に Dispatcher の Web サーバーモジュールを設定します。
CA 署名済み証明書の作成または取得 creating-or-obtaining-ca-signed-certificates
パブリッシュインスタンスと Dispatcher を認証する CA 署名済みの証明書を作成または取得します。
CA の作成 creating-your-ca
ユーザーが CA の役目を果たす場合は、OpenSSL を使用して、サーバーとクライアントの証明書に署名する証明機関を作成します。(OpenSSL ライブラリがインストールされている必要があります)。サードパーティ CA を使用する場合は、この手順を実行しないでください。
-
ターミナルを開き、現在のディレクトリを
CA.sh
ファイルを含むディレクトリ(例:/usr/local/ssl/misc
)に変更します。 -
CA を作成するには、次のコマンドを入力し、プロンプトに従って値を指定します。
code language-shell ./CA.sh -newca
note note NOTE openssl.cnf
ファイルのいくつかのプロパティによって、CA.sh スクリプトの動作が制御されます。CA を作成する前に、必要に応じてこのファイルを編集します。
証明書の作成 creating-the-certificates
OpenSSL を使用して証明書要求を作成し、サードパーティ CA に送信するか、自身の CA によって署名します。
証明書を作成する際、OpenSSL は Common Name プロパティを使用して証明書所有者を識別します。レンダーインスタンスの証明書については、証明書を受け入れるように Dispatcher を設定する場合、インスタンスコンピューターのホスト名を Common Name として使用します。この手順は、証明書がパブリッシュインスタンスのホスト名と一致する場合にのみ実行してください。DispatcherCheckPeerCN プロパティを参照してください。
-
ターミナルを開き、現在のディレクトリを OpenSSL ライブラリの CH.sh ファイルを含むディレクトリに変更します。
-
次のコマンドを入力し、プロンプトが表示されたら値を指定します。必要に応じて、パブリッシュインスタンスのホスト名を Common Name として使用します。ホスト名は、レンダーの IP アドレスに対して DNS 解決可能な名前です。
code language-shell ./CA.sh -newreq
サードパーティ CA を使用する場合は、署名するために CA に newreq.pem ファイルを送信します。ユーザーが CA の役目を果たす場合は、手順 3 に進みます。
-
CA の証明書を使用して証明書に署名するには、次のコマンドを入力します。
code language-shell ./CA.sh -sign
newcert.pem
とnewkey.pem
という名前の 2 つのファイルが、CA 管理ファイルを含むディレクトリに作成されます。この 2 つのファイルは、それぞれレンダリングコンピューターの公開証明書と秘密鍵です。 -
newcert.pem
の名前をrendercert.pem
に変更し、newkey.pem
の名前をrenderkey.pem
に変更します。 -
手順 2 と 3 を繰り返して、Dispatcher モジュール用の証明書と公開鍵を作成します。必ず Dispatcher インスタンスに固有の Common Name を使用してください。
-
newcert.pem
の名前をdispcert.pem
に変更し、newkey.pem
の名前をdispkey.pem
に変更します。
レンダーコンピューターでの SSL の設定 configuring-ssl-on-the-render-computer
rendercert.pem
ファイルと renderkey.pem
ファイルを使用してレンダーインスタンス上の SSL を設定します。
レンダリング証明書の JKS(Java™ KeyStore)形式への変換 converting-the-render-certificate-to-jks-format
次のコマンドを使用して、PEM ファイルであるレンダー証明書を PKCS#12 ファイルに変換します。レンダー証明書に署名した CA の証明書も含めます。
-
ターミナルウィンドウで、現在のディレクトリをレンダー証明書と秘密鍵の場所に変更します。
-
PEM ファイルであるレンダー証明書を PKCS#12 ファイルに変換するには、次のコマンドを入力します。レンダー証明書に署名した CA の証明書も含めます。
code language-shell openssl pkcs12 -export -in rendercert.pem -inkey renderkey.pem -certfile demoCA/cacert.pem -out rendercert.p12
-
PKCS#12 ファイルを Java™ KeyStore(JKS)形式に変換するには、次のコマンドを入力します。
code language-shell keytool -importkeystore -srckeystore servercert.p12 -srcstoretype pkcs12 -destkeystore render.keystore
-
Java™ Keystore は、デフォルトのエイリアスを使用して作成されます。必要に応じてエイリアスを変更します。
code language-shell keytool -changealias -alias 1 -destalias jettyhttp -keystore render.keystore
CA 証明書をレンダーの Truststore に追加 adding-the-ca-cert-to-the-render-s-truststore
ユーザーが CA の機役目を果たす場合は、CA 証明書をキーストアに読み込みます。次に、キーストアを信頼するように、レンダーインスタンスを実行する JVM を設定します。
-
テキストエディターを使用して、cacert.pem ファイルを開き、次の行の前にあるすべてのテキストを削除します。
-----BEGIN CERTIFICATE-----
-
次のコマンドを使用して、証明書をキーストアに読み込みます。
code language-shell keytool -import -keystore cacerts.keystore -alias myca -storepass password -file cacert.pem
-
キーストアを信頼するようにレンダーインスタンスを実行する JVM を設定するには、次のシステムプロパティを使用します。
code language-shell -Djavax.net.ssl.trustStore=<location of cacerts.keystore>
例えば、crx-quickstart/bin/quickstart スクリプトを使用してパブリッシュインスタンスを起動する場合、CQ_JVM_OPTS プロパティを次のように変更できます。
code language-shell CQ_JVM_OPTS='-server -Xmx2048m -XX:MaxPermSize=512M -Djavax.net.ssl.trustStore=/usr/lib/cq6.0/publish/ssl/cacerts.keystore'
レンダーインスタンスの設定 configuring-the-render-instance
SSL を使用するようにレンダーインスタンスの HTTP サービスを設定するには、「Enable SSL on the Publish Instance
」セクションの指示に従ってレンダー証明書を使用します。
- AEM 6.2:HTTP over SSL の有効化
- AEM 6.2:HTTP over SSL の有効化
- 旧バージョンの AEM:このページを参照してください。
Dispatcher モジュール用の SSL の設定 configuring-ssl-for-the-dispatcher-module
相互 SSL を使用するように Dispatcher を設定するには、Dispatcher 証明書を準備して、Web サーバーモジュールを設定します。
Dispatcher の統合証明書の作成 creating-a-unified-dispatcher-certificate
Dispatcher 証明書と暗号化されていない秘密鍵を組み合わせて、単一の PEM ファイルにします。テキストエディターまたは cat
コマンドを使用して、以下のサンプルのようなファイルを作成します。
-
ターミナルを開き、現在のディレクトリを dispkey.pem ファイルがある場所に変更します。
-
秘密鍵を復号化するには、次のコマンドを入力します。
code language-shell openssl rsa -in dispkey.pem -out dispkey_unencrypted.pem
-
テキストエディターまたは
cat
コマンドを使用して、暗号化されていない秘密鍵と証明書を組み合わせ、次のサンプルのような単一のファイルにします。code language-xml -----BEGIN RSA PRIVATE KEY----- MIICxjBABgkqhkiG9w0B... ...M2HWhDn5ywJsX -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIC3TCCAk... ...roZAs= -----END CERTIFICATE-----
Dispatcher 用に使用する証明書の指定 specifying-the-certificate-to-use-for-dispatcher
以下のプロパティを(httpd.conf
の)Dispatcher モジュールの設定に追加します。
DispatcherCertificateFile
:公開証明書と暗号化されていない秘密鍵を含む、Dispatcher の統合証明書ファイルへのパス。このファイルは、SSL サーバーが Dispatcher のクライアント証明書を要求する場合に使用します。DispatcherCACertificateFile
:CA 証明書ファイルへのパス。SSL サーバーがルート証明機関によって信頼されていない CA を提示する場合に使用されます。DispatcherCheckPeerCN
:リモートサーバー証明書のホスト名チェックを有効(On
)にするか無効(Off
)にするか。
以下のコードは設定のサンプルです。
<IfModule disp_apache2.c>
DispatcherConfig conf/dispatcher.any
DispatcherLog logs/dispatcher.log
DispatcherLogLevel 3
DispatcherNoServerHeader 0
DispatcherDeclineRoot 0
DispatcherUseProcessedURL 0
DispatcherPassError 0
DispatcherCertificateFile disp_unified.pem
DispatcherCACertificateFile cacert.pem
DispatcherCheckPeerCN On
</IfModule>