Dispatcher とレンダーコンピューター間には次の SSL 接続を使用します。
SSL 証明書に関連する操作は、サードパーティ製品に結び付けられます。 Adobe Platinum Maintenance and Support 契約の対象ではありません。
Dispatcher が SSL 接続を使用して AEM または CQ レンダーインスタンスと通信するように設定します。
Dispatcher を設定する前に、SSL を使用するように AEM または CQ を設定してください。
Dispatcher が 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 経由で AEM または CQ と接続するように Dispatcher を設定するには、dispatcher.any ファイルに以下のプロパティが必要です。
renders
セクションに、HTTPS を使用する CQ または AEM インスタンスのホスト名およびポートを識別するアイテムを含めます。renders
アイテムには、secure
というプロパティ(値:1
)が含まれます。注意:必要に応じて、HTTP 要求を処理する別の仮想ホストを作成します。
次の例 dispatcher.any
ファイルは、ホスト上で実行されている CQ インスタンスに HTTPS を使用して接続するためのプロパティ値を示します localhost
およびポート 8443
:
/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
}
相互 SSL を使用するには、Dispatcher とレンダーコンピューター ( 通常はAEMまたは CQ パブリッシュインスタンス ) 間の接続を設定します。
相互 SSL を設定するには、信頼済みの証明機関(CA)によって署名されている証明書が必要です。自己署名証明書では不十分です。証明書に署名するために、CA の機能を果たすことも、サードパーティ CA のサービスを利用することもできます。相互 SSL を設定するには、以下のアイテムが必要です。
相互 SSL を設定するには、次の手順を実行します。
パブリッシュインスタンスおよび Dispatcher を認証する、CA 署名済み証明書を作成または取得します。
CA の機能を果たしている場合は、OpenSSL を使用して、サーバーとクライアントの証明書に署名する証明機関を作成します(OpenSSL ライブラリがインストールされている必要があります)。サードパーティ CA を利用する場合は、この手順を実行しないでください。
ターミナルを開き、現在のディレクトリを CA.sh
ファイル: /usr/local/ssl/misc
.
CA を作成するには、次のコマンドを入力し、プロンプトに従って値を指定します。
./CA.sh -newca
の複数のプロパティ openssl.cnf
ファイルは、CA.sh スクリプトの動作を制御します。 CA を作成する前に、必要に応じてこのファイルを編集します。
OpenSSL を使用して証明書要求を作成し、サードパーティ CA に送信するか、自身の CA によって署名します。
証明書を作成する際、OpenSSL では Common Name プロパティを使用して証明書保持者を識別します。レンダーインスタンスの証明書については、証明書を受け入れるように Dispatcher を設定している場合は、インスタンスコンピューターのホスト名を共通名として使用し、パブリッシュインスタンスのホスト名と一致する場合にのみ使用します。 (DispatcherCheckPeerCN プロパティを参照)。
ターミナルを開き、現在のディレクトリを OpenSSL ライブラリの CH.sh ファイルを含むディレクトリに変更します。
次のコマンドを入力し、指示に従って値を指定します。必要に応じて、パブリッシュインスタンスのホスト名を共通名として使用します。 ホスト名は、レンダーの IP アドレスに対して DNS 解決可能な名前です。
./CA.sh -newreq
サードパーティ CA を利用する場合は、newreq.pem ファイルを署名する CA に送信します。CA の機能を果たしている場合は、手順 3 に進みます。
CA の証明書を使用して証明書に署名するには、次のコマンドを入力します。
./CA.sh -sign
次の名前の 2 つのファイル: newcert.pem
および newkey.pem
は、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 を設定する rendercert.pem
および renderkey.pem
ファイル。
次のコマンドを使用して、PEM ファイルであるレンダー証明書を PKCS#12 ファイルに変換します。 レンダー証明書に署名した CA の証明書も含めます。
ターミナルウィンドウで、現在のディレクトリをレンダー証明書と秘密鍵のある場所に変更します。
PEM ファイルであるレンダー証明書を PKCS#12 ファイルに変換するには、次のコマンドを入力します。 レンダー証明書に署名した CA の証明書も含めます。
openssl pkcs12 -export -in rendercert.pem -inkey renderkey.pem -certfile demoCA/cacert.pem -out rendercert.p12
PKCS#12 ファイルを Java™ KeyStore (JKS) 形式に変換するには、次のコマンドを入力します。
keytool -importkeystore -srckeystore servercert.p12 -srcstoretype pkcs12 -destkeystore render.keystore
Java™キーストアはデフォルトのエイリアスを使用して作成されます。 必要に応じてエイリアスを変更してください。
keytool -changealias -alias 1 -destalias jettyhttp -keystore render.keystore
CA の機能を果たしている場合は、CA 証明書をキーストアに読み込みます。次に、キーストアを信頼するように、レンダーインスタンスを実行している JVM を設定します。
テキストエディターを使用して、 cacert.pem ファイルを開き、次の行の前にあるすべてのテキストを削除します。
-----BEGIN CERTIFICATE-----
次のコマンドを使用して、証明書をキーストアに読み込みます。
keytool -import -keystore cacerts.keystore -alias myca -storepass password -file cacert.pem
キーストアを信頼するように、レンダーインスタンスを実行している JVM を設定するには、次のシステムプロパティを使用します。
-Djavax.net.ssl.trustStore=<location of cacerts.keystore>
例えば、crx-quickstart/bin/quickstart スクリプトを使用してパブリッシュインスタンスを起動する場合は、CQ_JVM_OPTS プロパティを次のように変更します。
CQ_JVM_OPTS='-server -Xmx2048m -XX:MaxPermSize=512M -Djavax.net.ssl.trustStore=/usr/lib/cq6.0/publish/ssl/cacerts.keystore'
SSL を使用するようにレンダーインスタンスの HTTP サービスを設定するには、 パブリッシュインスタンスでの SSL の有効化 セクション:
相互 SSL を使用するように Dispatcher を設定するには、Dispatcher 証明書を準備して、Web サーバーモジュールを設定します。
Dispatcher の証明書と暗号化されていない秘密鍵を組み合わせて、1 つの PEM ファイルにします。 テキストエディターまたは cat
コマンドを使用して、以下のサンプルのようなファイルを作成します。
ターミナルを開き、現在のディレクトリを dispkey.pem ファイルのある場所に変更します。
秘密鍵を復号化するには、次のコマンドを入力します。
openssl rsa -in dispkey.pem -out dispkey_unencrypted.pem
テキストエディターまたは cat
コマンドを使用して、暗号化されていない秘密鍵と証明書を組み合わせ、次のサンプルのような単一のファイルにします。
-----BEGIN RSA PRIVATE KEY-----
MIICxjBABgkqhkiG9w0B...
...M2HWhDn5ywJsX
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIC3TCCAk...
...roZAs=
-----END CERTIFICATE-----
以下のプロパティを(httpd.conf
の)Dispatcher モジュールの設定に追加します。
DispatcherCertificateFile
:公開証明書と暗号化されていない秘密鍵を含む、Dispatcher の統合証明書ファイルへのパス。このファイルは、SSL サーバーが Dispatcher のクライアント証明書を要求する場合に使用します。DispatcherCACertificateFile
:SSL サーバーが提示する CA がルート証明機関によって信頼されていない場合に使用する、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>