Verwenden von SSL mit dem Dispatcher

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

Hinweis

Vorgänge im Zusammenhang mit SSL-Zertifikaten sind von Drittanbieterprodukten abhängig. 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, nimmt Dispatcher die folgenden Header in die nachfolgende Anforderung auf, die an AEM oder CQ gesendet wird:

  • 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 einen weiteren virtuellen Host, um bei Bedarf HTTP-Anforderungen zu verarbeiten.

Im folgenden Beispiel weist die Datei „dispatcher.any“ die Eigenschaftenwerte für das Herstellen einer Verbindung mithilfe von HTTPS zu einer CQ-Instanz auf, die auf dem Host localhost und Port 8443 ausgeführt wird:

/farms
{
   /secure
   { 
      /virtualhosts
      {
         # select this farm for all incoming HTTPS requestss
         "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
         "https://*"
      }
      /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

Konfigurieren Sie die Verbindungen zwischen dem Dispatcher und dem Rendercomputer für die Wiedergabe (normalerweise eine AEM- oder CQ-Veröffentlichungsinstanz) zur Verwendung der bidirektionalen SSL-Kommunikation:

  • Der Dispatcher stellt über SSL eine Verbindung zur Renderinstanz her.
  • Die Renderinstanz überprüft die Gültigkeit des Zertifikats des Dispatchers.
  • Dispatcher überprüft, ob das CA 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 die folgenden Schritte aus, um die bidirektionale SSL-Kommunikation zu konfigurieren:

  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 Sie einen Keystore, der das Renderzertifikat enthält und konfigurieren Sie den HTTP-Dienst des Renderknotens so, dass er es verwendet.
  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 Terminalfenster und ändern Sie das aktuelle Verzeichnis in das Verzeichnis, in dem sich die Datei „CA.sh“ befindet, beispielsweise /usr/local/ssl/misc.

  2. Um die Zertifizierungsstelle zu erstellen, geben Sie den folgenden Befehl ein und geben Sie dann Werte an, wenn Sie dazu aufgefordert werden:

    ./CA.sh -newca
    
    Hinweis

    Einige Eigenschaften in der Datei „openssl.cnf“ steuern das Verhalten des Skripts „CA.sh“. Sie sollten diese Datei entsprechend ändern, bevor Sie die 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 den allgemeinen Namen, wenn Sie den Dispatcher so konfigurieren, dass das Zertifikat nur dann akzeptiert wird, wenn es dem Hostnamen der Veröffentlichungsinstanz entspricht. (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 "Allgemeiner Name". 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. Geben Sie den folgenden Befehl ein, um das Zertifikat mithilfe des Zertifikats Ihrer Zertifizierungsstelle zu signieren:

    ./CA.sh -sign
    

    Es werden zwei Dateien mit den Namen „newcert.pem“ und „newkey.pem“in dem Ordner erstellt, der Ihre Dateien für die Verwaltung der Zertifizierungsstelle enthält. Hierbei handelt es sich um das öffentliche Zertifikat und den privaten Schlüssel für den Rendercomputer.

  4. Benennen Sie „newcert.pem“ in „rendercert.pem“ und „newkey.pem“ in „renderkey.pem“ um.

  5. Wiederholen Sie die Schritte 2 und 3, um ein neues Zertifikat und einen neuen ö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. Benennen Sie „newcert.pem“ in „dispcert.pem“ und „newkey.pem“ in „dispkey.pem“ um.

Konfigurieren von SSL auf dem Rendercomputer

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

Konvertieren des Renderzertifikats in das JKS-Format

Verwenden Sie den folgenden Befehl, um das Renderzertifikat, bei dem es sich um eine PEM-Datei handelt, in eine Datei im PKCS#12-Format 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, bei dem es sich um eine PEM-Datei handelt, in eine Datei im PKCS#12-Format 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 im PKCS#12-Format in das JKS-Format (Java KeyStore) zu konvertieren:

    keytool -importkeystore -srckeystore servercert.p12 -srcstoretype pkcs12 -destkeystore render.keystore
    
  4. Der Java-Keystore wird mithilfe eines 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 Text-Editor, 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

Verwenden Sie das Renderzertifikat mit den Anweisungen im Abschnitt Aktivieren von SSL auf der Veröffentlichungsinstanz, um den HTTP-Dienst der Renderinstanz für die Verwendung von SSL zu konfigurieren:

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

Führen Sie das Dispatcher-Zertifikat und den unverschlüsselten privaten Schlüssel in einer einzelnen PEM-Datei zusammen. 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