Verwenden Sie SSL-Verbindungen zwischen dem Dispatcher und dem Rendercomputer:
Vorgänge im Zusammenhang mit SSL-Zertifikaten sind an Produkte von Drittanbietern gebunden. Sie sind nicht durch den Adobe Platinum Maintenance and Support-Vertrag abgedeckt.
Konfigurieren Sie den Dispatcher für die Kommunikation mit der AEM- oder CQ-Renderinstanz mithilfe von SSL-Verbindungen.
Bevor Sie den Dispatcher konfigurieren, konfigurieren Sie zunächst AEM oder CQ für die Verwendung von SSL:
Wenn der Dispatcher eine HTTPS-Anforderung erhält, enthält der Dispatcher die folgenden Header in der nachfolgenden Anfrage, die er an AEM oder CQ sendet:
X-Forwarded-SSL
X-Forwarded-SSL-Cipher
X-Forwarded-SSL-Keysize
X-Forwarded-SSL-Session-ID
Eine Anfrage durch Apache 2.4 mit mod_ssl
enthält ähnliche Kopfzeilen wie im folgenden Beispiel:
X-Forwarded-SSL: on
X-Forwarded-SSL-Cipher: DHE-RSA-AES256-SHA
X-Forwarded-SSL-Session-ID: 814825E8CD055B4C166C2EF6D75E1D0FE786FFB29DEB6DE1E239D5C771CB5B4D
Um den Dispatcher so zu konfigurieren, dass über SSL eine Verbindung mit AEM oder CQ hergestellt wird, muss die Datei dispatcher.any die folgenden Eigenschaften aufweisen:
renders
des virtuellen Hosts beinhaltet ein Element, das den Hostnamen und den Port der CQ- oder AEM-Instanz identifiziert, die HTTPS verwendet.renders
beinhaltet eine Eigenschaft namens secure
mit dem Wert 1
.Hinweis: Erstellen Sie bei Bedarf einen weiteren virtuellen Host zur Verarbeitung von HTTP-Anforderungen.
Das folgende Beispiel dispatcher.any
-Datei zeigt die Eigenschaftswerte für die Verbindung mit HTTPS zu einer CQ-Instanz an, die auf dem Host ausgeführt wird localhost
und Port 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
}
Um Mutual SSL zu verwenden, konfigurieren Sie die Verbindungen zwischen dem Dispatcher und dem Rendercomputer (normalerweise eine AEM- oder CQ-Veröffentlichungsinstanz):
Um die bidirektionale SSL-Kommunikation zu konfigurieren, benötigen Sie Zertifikate, die von einer vertrauenswürdigen Zertifizierungsstelle signiert sind. Selbstsignierte Zertifikate sind nicht ausreichend. Entweder können Sie als Zertifizierungsstelle fungieren oder Sie können eine externe Zertifizierungsstelle in Anspruch nehmen, um Ihre Zertifikate zu signieren. Um die bidirektionale SSL-Kommunikation zu konfigurieren, benötigen Sie Folgendes:
Führen Sie zum Konfigurieren der bidirektionalen SSL-Kommunikation die folgenden Schritte aus:
Erstellen oder beziehen Sie von einer Zertifizierungsstelle signierte Zertifikate, die die Veröffentlichungsinstanz und den Dispatcher authentifizieren.
Wenn Sie als Zertifizierungsstelle fungieren, verwenden Sie OpenSSL zum Erstellen der Zertifizierungsstelle, die die Server- und Clientzertifikate signiert. (Sie müssen die OpenSSL-Bibliotheken installiert haben.) Führen Sie diese Schritte nicht durch, wenn Sie eine externe Zertifizierungsstelle verwenden.
Öffnen Sie ein Terminal und ändern Sie den aktuellen Ordner in den Ordner, der die CA.sh
-Datei, z. B. /usr/local/ssl/misc
.
Um die Zertifizierungsstelle zu erstellen, geben Sie den folgenden Befehl ein und geben Sie dann bei Aufforderung Werte an:
./CA.sh -newca
Mehrere Eigenschaften in openssl.cnf
-Datei steuern das Verhalten des Skripts "CA.sh". Bearbeiten Sie diese Datei nach Bedarf, bevor Sie Ihre Zertifizierungsstelle erstellen.
Verwenden Sie OpenSSL, um die Zertifikatanforderungen zu erstellen, die an die externe Zertifizierungsstelle gesendet oder von Ihrer Zertifizierungsstelle signiert werden sollen.
Wenn Sie ein Zertifikat erstellen, verwendet OpenSSL die Eigenschaft für den allgemeinen Namen des Zertifikats, um den Zertifikatinhaber zu identifizieren. Verwenden Sie für das Zertifikat der Renderinstanz den Hostnamen des Instanzcomputers als allgemeinen Namen, wenn Sie den Dispatcher so konfigurieren, dass das Zertifikat akzeptiert wird, und nur, wenn er mit dem Hostnamen der Veröffentlichungsinstanz übereinstimmt. (Siehe Eigenschaft DispatcherCheckPeerCN)
Öffnen Sie ein Terminalfenster und ändern Sie das aktuelle Verzeichnis in das Verzeichnis, in dem sich die Datei „CH.sh“ Ihrer OpenSSL-Bibliotheken befindet.
Geben Sie den folgenden Befehl ein und geben Sie Werte an, wenn Sie dazu aufgefordert werden. Verwenden Sie bei Bedarf den Hostnamen der Veröffentlichungsinstanz als allgemeinen Namen. Der Hostname ist ein von DNS auflösbarer Name für die IP-Adresse des Renderknotens:
./CA.sh -newreq
Wenn Sie eine externe Zertifizierungsstelle in Anspruch nehmen, senden Sie die Datei „newreq.pem“ zum Signieren an die Zertifizierungsstelle. Wenn Sie als Zertifizierungsstelle fungieren, fahren Sie mit Schritt 3 fort.
Um das Zertifikat mit dem Zertifikat Ihrer Zertifizierungsstelle zu signieren, geben Sie den folgenden Befehl ein:
./CA.sh -sign
Zwei Dateien namens newcert.pem
und newkey.pem
werden in dem Verzeichnis erstellt, das Ihre CA-Verwaltungsdateien enthält. Diese beiden Dateien sind das öffentliche Zertifikat und der private Schlüssel für den Rendercomputer.
Umbenennen newcert.pem
nach rendercert.pem
, und umbenennen newkey.pem
nach renderkey.pem
.
Wiederholen Sie die Schritte 2 und 3, um ein Zertifikat und einen öffentlichen Schlüssel für das Dispatcher-Modul zu erstellen. Stellen Sie sicher, dass Sie einen allgemeinen Namen verwenden, der für die Dispatcher-Instanz spezifisch ist.
Umbenennen newcert.pem
nach dispcert.pem
, und umbenennen newkey.pem
nach dispkey.pem
.
Konfigurieren Sie SSL auf der Renderinstanz mithilfe der rendercert.pem
und renderkey.pem
Dateien.
Verwenden Sie den folgenden Befehl, um das Renderzertifikat, eine PEM-Datei, in eine PKCS#12-Datei zu konvertieren. Nehmen Sie außerdem das Zertifikat der Zertifizierungsstelle auf, die das Renderzertifikat signiert hat:
Ändern Sie in einem Terminalfenster das aktuelle Verzeichnis in den Speicherort des Renderzertifikats und des privaten Schlüssels.
Geben Sie den folgenden Befehl ein, um das Renderzertifikat, eine PEM-Datei, in eine PKCS#12-Datei zu konvertieren. Nehmen Sie außerdem das Zertifikat der Zertifizierungsstelle auf, die das Renderzertifikat signiert hat:
openssl pkcs12 -export -in rendercert.pem -inkey renderkey.pem -certfile demoCA/cacert.pem -out rendercert.p12
Geben Sie den folgenden Befehl ein, um die Datei PKCS#12 in das JKS-Format (Java™ KeyStore) zu konvertieren:
keytool -importkeystore -srckeystore servercert.p12 -srcstoretype pkcs12 -destkeystore render.keystore
Der Java™ Keystore wird mit einem Standardalias erstellt. Ändern Sie den Alias (falls gewünscht):
keytool -changealias -alias 1 -destalias jettyhttp -keystore render.keystore
Wenn Sie als Zertifizierungsstelle fungieren, importieren Sie das Zertifizierungsstellenzertifikat in einen Keystore. Konfigurieren Sie anschließend die JVM, in der die Renderinstanz ausgeführt wird, sodass sie dem Keystore vertraut.
Verwenden Sie einen Texteditor, um die Datei cacert.pem zu öffnen und den gesamten Text zu entfernen, der der folgenden Zeile vorangeht:
-----BEGIN CERTIFICATE-----
Verwenden Sie den folgenden Befehl, um das Zertifikat in den Keystore zu importieren:
keytool -import -keystore cacerts.keystore -alias myca -storepass password -file cacert.pem
Um die JVM zu konfigurieren, in der die Renderinstanz ausgeführt wird, sodass sie dem Keystore vertraut, verwenden Sie die folgende Systemeigenschaft:
-Djavax.net.ssl.trustStore=<location of cacerts.keystore>
Wenn Sie beispielsweise das Skript „crx-quickstart/bin/quickstart script“ verwenden, um Ihre Veröffentlichungsinstanz zu starten, können Sie die Eigenschaft „CQ_JVM_OPTS“ ändern:
CQ_JVM_OPTS='-server -Xmx2048m -XX:MaxPermSize=512M -Djavax.net.ssl.trustStore=/usr/lib/cq6.0/publish/ssl/cacerts.keystore'
Um den HTTP-Dienst der Renderinstanz für die Verwendung von SSL zu konfigurieren, verwenden Sie das Renderzertifikat mit den Anweisungen im Abschnitt Aktivieren Sie SSL auf der Veröffentlichungsinstanz Abschnitt:
Um den Dispatcher für die Verwendung der bidirektionalen SSL-Kommunikation zu konfigurieren, bereiten Sie das Dispatcher-Zertifikat vor und konfigurieren Sie dann das Webservermodul.
Kombinieren Sie das Dispatcher-Zertifikat und den unverschlüsselten privaten Schlüssel in einer einzelnen PEM-Datei. Verwenden Sie einen Text-Editor oder den Befehl cat
, um eine Datei wie im folgenden Beispiel zu erstellen:
Öffnen Sie ein Terminalfenster und ändern Sie das aktuelle Verzeichnis in den Speicherort der Datei „dispkey.pem“.
Geben Sie zum Entschlüsseln des privaten Schlüssels den folgenden Befehl ein:
openssl rsa -in dispkey.pem -out dispkey_unencrypted.pem
Verwenden Sie einen Text-Editor oder den Befehl cat
, um den unverschlüsselten privaten Schlüssel und das Zertifikat wie im folgenden Beispiel in einer Datei zusammenzuführen:
-----BEGIN RSA PRIVATE KEY-----
MIICxjBABgkqhkiG9w0B...
...M2HWhDn5ywJsX
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIC3TCCAk...
...roZAs=
-----END CERTIFICATE-----
Fügen Sie die folgenden Eigenschaften zur Konfiguration des Dispatcher-Moduls (in der Datei httpd.conf
) hinzu:
DispatcherCertificateFile
: Der Pfad zu der Datei mit dem einheitlichen Dispatcher-Zertifikat, die das öffentliche Zertifikat und den unverschlüsselten privaten Schlüssel enthält. Diese Datei wird verwendet, wenn der SSL-Server das Dispatcher-Clientzertifikat anfordert.DispatcherCACertificateFile
: Der Pfad zur Datei mit dem Zertifizierungsstellenzertifikat, die verwendet wird, wenn der SSL-Server eine Zertifizierungsstelle präsentiert, die von einer Stammzertifizierungsstelle als nicht vertrauenswürdig eingestuft wird.DispatcherCheckPeerCN
: Gibt an, ob die Überprüfung des Hostnamens für Remoteserverzertifikate aktiviert (On
) oder deaktiviert (Off
) werden soll.Der folgende Code weist eine Beispielkonfiguration auf:
<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>