在 Dispatcher 與轉譯器電腦之間使用 SSL 連線:
與 SSL 憑證有關的作業會與協力廠商產品綁定。 Adobe 白金級維護和支援合約中不涵蓋這些作業。
設定 Dispatcher 以便使用 SSL 連線與 AEM 或 CQ 轉譯器執行個體通訊。
在設定 Dispatcher 之前,請設定 AEM 或 CQ 使用 SSL:
當 Dispatcher 收到 HTTPS 請求時,Dispatcher 會在其傳送給 AEM 或 CQ 的後續請求中包含以下標頭:
X-Forwarded-SSL
X-Forwarded-SSL-Cipher
X-Forwarded-SSL-Keysize
X-Forwarded-SSL-Session-ID
透過帶有 mod_ssl
的 Apache-2.4 發送的請求包含與以下範例類似的標頭:
X-Forwarded-SSL: on
X-Forwarded-SSL-Cipher: DHE-RSA-AES256-SHA
X-Forwarded-SSL-Session-ID: 814825E8CD055B4C166C2EF6D75E1D0FE786FFB29DEB6DE1E239D5C771CB5B4D
若要設定 Dispatcher 來透過 SSL 與 AEM 或 CQ 連線,您的 dispatcher.any 檔案需要以下屬性:
renders
區段包含一個項目,此項目會識別使用 HTTPS 的 CQ 或 AEM 執行個體的主機名稱及連接埠。renders
項目包含名為 secure
的屬性,其值為 1
。注意:如果需要,請建立另一部虛擬主機來處理 HTTP 請求。
以下範例 dispatcher.any
檔案顯示用來使用 HTTPS 連線到在主機 localhost
和連接埠 8443
上執行的 CQ 執行個體的屬性值:
/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,請執行以下步驟:
建立或取得 CA 簽署的憑證,該憑證用來驗證發佈執行個體和 Dispatcher。
如果您充當 CA,請使用 OpenSSL 建立可簽署伺服器和用戶端憑證的憑證授權單位。 (您必須已安裝 OpenSSL 程式庫。) 如果您使用第三方 CA,請勿執行此程序。
開啟終端機,並將目前目錄切換到包含 CA.sh
檔案的目錄,例如 /usr/local/ssl/misc
。
若要建立 CA,請輸入以下命令,然後在收到提示時提供值:
./CA.sh -newca
openssl.cnf
檔案中的幾個屬性可控制 CA.sh 指令碼的行為。 在您建立 CA 之前,視需要編輯此檔案。
使用 OpenSSL 建立要傳送給第三方 CA 或透過您的 CA 簽署的憑證請求。
當您建立憑證時,OpenSSL 會使用一般名稱屬性來識別憑證持有者。 對於轉譯器執行個體的憑證,如果您將 Dispatcher 設定為只有在其符合發佈執行個體的主機名稱時才接受憑證,請使用執行個體電腦的主機名稱當作一般名稱。 (請參閱 DispatcherCheckPeerCN 屬性。)
開啟終端機,並將目前目錄切換到包含您的 OpenSSL 程式庫的 CH.sh 檔案的目錄。
輸入以下命令,然後在收到提示時提供值。 必要時,請使用發佈執行個體的主機名稱當作一般名稱。 主機名稱是轉譯器的 IP 位址的 DNS 可解析名稱:
./CA.sh -newreq
如果您使用第三方 CA,請傳送 newreq.pem 檔案給 CA 進行簽署。 如果您充當 CA,請繼續前往步驟 3。
若要使用您 CA 的憑證簽署此憑證,請輸入以下命令:
./CA.sh -sign
在包含您的 CA 管理檔案的目錄中建立兩個名為 newcert.pem
和 newkey.pem
的檔案。 這兩個檔案分別是適用於轉譯器電腦的公開憑證和私密金鑰。
將 newcert.pem
重新命名為 rendercert.pem
,並將 newkey.pem
重新命名為 renderkey.pem
。
重複步驟 2 和 3,為 Dispatcher 模組建立憑證和公開金鑰。 務必使用 Dispatcher 執行個體專屬的一般名稱。
將 newcert.pem
重新命名為 dispcert.pem
,並將 newkey.pem
重新命名為 dispkey.pem
。
在轉譯器執行個體上使用 rendercert.pem
和 renderkey.pem
檔案設定 SSL。
使用以下命令,將轉譯器憑證 (亦即 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™ Keystore 是使用預設別名所建立。 如有需要,請變更別名:
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 服務來使用 SSL,請依照在發佈執行個體上啟用 SSL一節中的指示來使用轉譯器憑證:
若要設定 Dispatcher 使用雙向 SSL,請準備 Dispatcher 憑證,然後設定網頁伺服器模組。
將 Dispatcher 憑證和未加密的私密金鑰合併到單一 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-----
將以下屬性新增到 Dispatcher 模組設定 (在 httpd.conf
中):
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>