Verwenden von SSL mit dem Dispatcher

Letzte Aktualisierung: 2023-03-15
  • Themen:
  • Dispatcher
    Weitere Informationen zu diesem Thema
  • Erstellt für:
  • Admin

Verwenden Sie SSL-Verbindungen zwischen dem Dispatcher und dem Rendercomputer:

HINWEIS

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.

Verwenden von SSL, wenn der Dispatcher eine Verbindung zu AEM herstellt

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

Konfigurieren des Dispatchers für die Verwendung von SSL

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:

  • Ein virtueller Host, der HTTPS-Anforderungen bearbeitet.
  • Der Abschnitt renders des virtuellen Hosts beinhaltet ein Element, das den Hostnamen und den Port der CQ- oder AEM-Instanz identifiziert, die HTTPS verwendet.
  • Das Element 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
}

Konfigurieren der bidirektionalen SSL-Kommunikation zwischen dem Dispatcher und AEM

Um Mutual SSL zu verwenden, konfigurieren Sie die Verbindungen zwischen dem Dispatcher und dem Rendercomputer (normalerweise eine AEM- oder CQ-Veröffentlichungsinstanz):

  • Der Dispatcher stellt über SSL eine Verbindung zur Renderinstanz her.
  • Die Renderinstanz überprüft die Gültigkeit des Zertifikats des Dispatchers.
  • Der Dispatcher überprüft, ob die Zertifizierungsstelle des Zertifikats der Renderinstanz vertrauenswürdig ist.
  • (Optional) Der Dispatcher überprüft, ob das Zertifikat der Renderinstanz mit der Serveradresse der Renderinstanz übereinstimmt.

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:

  • Signierte Zertifikate für die Renderinstanz und den Dispatcher
  • Das Zertifikat der Zertifizierungsstelle (wenn Sie als Zertifizierungsstelle fungieren)
  • OpenSSL-Bibliotheken für die Generierung der Zertifizierungsstelle, Zertifikate und Zertifikatanforderungen

Führen Sie zum Konfigurieren der bidirektionalen SSL-Kommunikation die folgenden Schritte aus:

  1. Installieren Sie die neueste Version des Dispatchers für Ihre Plattform. Verwenden Sie eine Dispatcher-Binärdatei, die SSL unterstützt (SSL ist im Dateinamen enthalten, etwa „dispatcher-apache2.4-linux-x86-64-ssl10-4.1.7.tar“).
  2. Erstellen oder beziehen Sie ein von einer Zertifizierungsstelle signiertes Zertifikat für den Dispatcher und die Renderinstanz.
  3. Erstellen eines Keystore, der das Renderzertifikat enthält und konfigurieren Sie den HTTP-Dienst des Renderers.
  4. Konfigurieren Sie das Dispatcher-Webservermodul für die bidirektionale SSL-Kommunikation.

Erstellen oder Beziehen von von Zertifizierungsstellen signierten Zertifikaten

Erstellen oder beziehen Sie von einer Zertifizierungsstelle signierte Zertifikate, die die Veröffentlichungsinstanz und den Dispatcher authentifizieren.

Erstellen einer Zertifizierungsstelle

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.

  1. Öffnen Sie ein Terminal und ändern Sie den aktuellen Ordner in den Ordner, der die CA.sh -Datei, z. B. /usr/local/ssl/misc.

  2. Um die Zertifizierungsstelle zu erstellen, geben Sie den folgenden Befehl ein und geben Sie dann bei Aufforderung Werte an:

    ./CA.sh -newca
    
    HINWEIS

    Mehrere Eigenschaften in openssl.cnf -Datei steuern das Verhalten des Skripts "CA.sh". Bearbeiten Sie diese Datei nach Bedarf, bevor Sie Ihre Zertifizierungsstelle erstellen.

Erstellen von Zertifikaten

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)

  1. Öffnen Sie ein Terminalfenster und ändern Sie das aktuelle Verzeichnis in das Verzeichnis, in dem sich die Datei „CH.sh“ Ihrer OpenSSL-Bibliotheken befindet.

  2. 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.

  3. 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.

  4. Umbenennen newcert.pem nach rendercert.pem, und umbenennen newkey.pem nach renderkey.pem.

  5. 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.

  6. Umbenennen newcert.pem nach dispcert.pem, und umbenennen newkey.pem nach dispkey.pem.

Konfigurieren von SSL auf dem Rendercomputer

Konfigurieren Sie SSL auf der Renderinstanz mithilfe der rendercert.pem und renderkey.pem Dateien.

Konvertieren des Renderzertifikats in das JKS-Format (Java™ KeyStore)

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:

  1. Ändern Sie in einem Terminalfenster das aktuelle Verzeichnis in den Speicherort des Renderzertifikats und des privaten Schlüssels.

  2. 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
    
  3. 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
    
  4. Der Java™ Keystore wird mit einem Standardalias erstellt. Ändern Sie den Alias (falls gewünscht):

    keytool -changealias -alias 1 -destalias jettyhttp -keystore render.keystore
    

Hinzufügen des Zertifizierungsstellenzertifikats zum Render-TrustStore

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.

  1. Verwenden Sie einen Texteditor, um die Datei cacert.pem zu öffnen und den gesamten Text zu entfernen, der der folgenden Zeile vorangeht:

    -----BEGIN CERTIFICATE-----

  2. 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
    
  3. 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'
    

Konfigurieren der Renderinstanz

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:

Konfigurieren von SSL für das Dispatcher-Modul

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.

Erstellen eines einheitlichen Dispatcher-Zertifikats

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:

  1. Öffnen Sie ein Terminalfenster und ändern Sie das aktuelle Verzeichnis in den Speicherort der Datei „dispkey.pem“.

  2. Geben Sie zum Entschlüsseln des privaten Schlüssels den folgenden Befehl ein:

    openssl rsa -in dispkey.pem -out dispkey_unencrypted.pem
    
  3. 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-----
    

Festlegen des für den Dispatcher zu verwendenden Zertifikats

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>

Auf dieser Seite