Utilizzo di SSL con Dispatcher

Utilizza le connessioni SSL tra Dispatcher e il computer di rendering:

NOTA

Le operazioni relative ai certificati SSL sono associate a prodotti di terze parti. Non sono coperte dal contratto Adobe Platinum Maintenance and Support.

Utilizza SSL quando Dispatcher si connette a AEM

Configura Dispatcher per comunicare con l’istanza di rendering AEM o CQ utilizzando le connessioni SSL.

Prima di configurare Dispatcher, configura AEM o CQ per l’utilizzo di SSL:

Quando Dispatcher riceve una richiesta HTTPS, include le seguenti intestazioni nella richiesta successiva che invia ad AEM o CQ:

  • X-Forwarded-SSL
  • X-Forwarded-SSL-Cipher
  • X-Forwarded-SSL-Keysize
  • X-Forwarded-SSL-Session-ID

Una richiesta tramite Apache-2.4 con mod_ssl include intestazioni simili a quelle del seguente esempio:

X-Forwarded-SSL: on
X-Forwarded-SSL-Cipher: DHE-RSA-AES256-SHA
X-Forwarded-SSL-Session-ID: 814825E8CD055B4C166C2EF6D75E1D0FE786FFB29DEB6DE1E239D5C771CB5B4D

Configurazione di Dispatcher per utilizzare SSL

Per configurare Dispatcher per la connessione con AEM o CQ tramite SSL, il file dispatcher.any richiede le seguenti proprietà:

  • Un host virtuale che gestisca le richieste HTTPS.
  • La sezione renders dell'host virtuale include un elemento che identifica il nome host e la porta dell'istanza CQ o AEM che utilizza HTTPS.
  • L'elemento renders include una proprietà denominata secure con valore 1.

Nota: crea un altro host virtuale per la gestione delle richieste HTTP, se necessario.

Il seguente esempio di file dispatcher.any mostra i valori delle proprietà per la connessione tramite HTTPS a un'istanza CQ in esecuzione sull’host localhost e sulla porta 8443:

/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
}

Configurazione di SSL reciproco tra Dispatcher e AEM

Configura le connessioni tra Dispatcher e il computer di rendering (in genere, un’istanza Publish di AEM o CQ) per utilizzare SSL reciproco:

  • Dispatcher si connette all’istanza di rendering tramite SSL.
  • L’istanza di rendering verifica la validità del certificato di Dispatcher.
  • Dispatcher verifica che la CA del certificato dell’istanza di rendering sia attendibile.
  • (Facoltativo) Dispatcher verifica che il certificato dell’istanza di rendering corrisponda all’indirizzo del server dell’istanza di rendering.

Per configurare SSL reciproco, è necessario disporre di certificati firmati da un’autorità di certificazione (CA) attendibile. I certificati autofirmati non sono sufficienti. Puoi fungere da CA o utilizzare i servizi di una CA di terze parti per firmare i certificati. Per configurare SSL reciproco, sono necessari i seguenti elementi:

  • Certificati firmati per l’istanza di rendering e Dispatcher
  • Certificato CA (se sei tu a fungere da CA)
  • Librerie OpenSSL per la generazione di CA, certificati e richieste di certificati.

Fai quanto segue per configurare SSL reciproco:

  1. Installa la versione più recente di Dispatcher per la piattaforma in uso. Utilizza un file binario di Dispatcher che supporta SSL (SSL compare nel nome file, ad esempio dispatcher-apache2.4-linux-x86-64-ssl10-4.1.7.tar).
  2. Crea o ottieni un certificato firmato da una CA per Dispatcher e l’istanza di rendering.
  3. Crea un keystore contenente il certificato di rendering e configura il servizio HTTP del rendering in modo che possa utilizzarlo.
  4. Configura il modulo server Web di Dispatcher per SSL reciproco.

Creazione o conseguimento di certificati firmati da una CA

Crea o ottieni i certificati firmati da una CA che autentichino l’istanza Publish e Dispatcher.

Creazione della tua CA

Se fungi da CA, utilizza OpenSSL per creare l’Autorità di certificazione (CA) che firma i certificati per server e client. (È necessario che siano installate le librerie OpenSSL). Se utilizzi una CA di terze parti, non seguire questa procedura.

  1. Apri un terminale e cambia la directory corrente con la directory che contiene il file CA.sh, ad esempio /usr/local/ssl/misc.

  2. Per creare la CA, immetti il seguente comando, quindi specifica i valori quando ti viene richiesto:

    ./CA.sh -newca
    
    NOTA

    Diverse proprietà nel file openssl.cnf controllano il comportamento dello script CA.sh. Modificare questo file come necessario prima di creare la CA.

Creazione dei certificati

Utilizza OpenSSL per creare le richieste di certificato da inviare alla CA di terze parti o per firmare con la tua CA.

Quando crei un certificato, OpenSSL utilizza la proprietà Common Name per identificare il titolare del certificato. Per il certificato dell’istanza di rendering, utilizza il nome host del computer dell’istanza come Common Name, se stai configurando Dispatcher per accettare il certificato solo se corrisponde al nome host dell’istanza Publish. (Vedi la proprietà DispatcherCheckPeerCN).

  1. Apri un terminale e cambia la directory corrente con la directory che contiene il file CH.sh delle librerie OpenSSL.

  2. Immetti il seguente comando e fornisci i valori quando richiesto. Se necessario, utilizza il nome host dell’istanza Publish come Common Name. Il nome host è un nome risolvibile DNS per l'indirizzo IP del rendering:

    ./CA.sh -newreq
    

    Se utilizzi una CA di terze parti, invia il file newreq.pem alla CA per la firma. Se sei tu a fungere da CA, continua con il passaggio 3.

  3. Immetti il comando seguente per firmare il certificato utilizzando il certificato della tua CA:

    ./CA.sh -sign
    

    Nella directory che contiene i file di gestione della CA vengono creati due file: newcert.pem e newkey.pem. Si tratta rispettivamente del certificato pubblico e della chiave privata per il computer di rendering.

  4. Rinomina newcert.pem in rendercert.pem e rinomina newkey.pem in renderkey.pem.

  5. Ripeti i passaggi 2 e 3 per creare un nuovo certificato e una nuova chiave pubblica per il modulo Dispatcher. Utilizzare un Common Name specifico per l’istanza di Dispatcher.

  6. Rinomina newcert.pem in discert.pem e rinomina newkey.pem in diskey.pem.

Configurazione di SSL sul computer di rendering

Configura SSL sull’istanza di rendering utilizzando i file rendercert.pem e renderkey.pem.

Conversione del certificato di rendering in formato JKS

Utilizza il seguente comando per convertire il certificato di rendering, che è un file PEM, in un file PKCS#12. Includi anche il certificato della CA che ha firmato il certificato di rendering:

  1. In una finestra del terminale, cambia la directory corrente con quella che contiene il certificato di rendering e la chiave privata.

  2. Immetti il seguente comando per convertire il certificato di rendering, che è un file PEM, in un file PKCS#12. Includi anche il certificato della CA che ha firmato il certificato di rendering:

    openssl pkcs12 -export -in rendercert.pem -inkey renderkey.pem  -certfile demoCA/cacert.pem -out rendercert.p12
    
  3. Immetti il seguente comando per convertire il file PKCS#12 in formato Java KeyStore (JKS):

    keytool -importkeystore -srckeystore servercert.p12 -srcstoretype pkcs12 -destkeystore render.keystore
    
  4. Il file Java Keystore viene creato con un alias predefinito. Se vuoi, puoi modificare l’alias:

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

Aggiunta del certificato CA al truststore del rendering

Se sei tu a fungere da CA, importa il certificato CA in un keystore. Quindi, configura la JVM che esegue l'istanza di rendering in modo che consideri attendibile il keystore.

  1. Utilizza un editor di testo per aprire il file cacert.pem e rimuovere tutto il testo che precede la seguente riga:

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

  2. Utilizza il seguente comando per importare il certificato in un keystore:

    keytool -import -keystore cacerts.keystore -alias myca -storepass password -file cacert.pem
    
  3. Per configurare la JVM che esegue l'istanza di rendering in modo che consideri attendibile il keystore, utilizza la seguente proprietà di sistema:

    -Djavax.net.ssl.trustStore=<location of cacerts.keystore>
    

    Ad esempio, se utilizzi lo script crx-quickstart/bin/quickstart per avviare l'istanza Publish, puoi modificare la proprietà CQ_JVM_OPTS:

    CQ_JVM_OPTS='-server -Xmx2048m -XX:MaxPermSize=512M -Djavax.net.ssl.trustStore=/usr/lib/cq6.0/publish/ssl/cacerts.keystore'
    

Configurazione dell’istanza di rendering

Utilizza il certificato di rendering con le istruzioni contenute nella sezione Abilita SSL nell'istanza Publish per configurare il servizio HTTP dell'istanza di rendering in modo che utilizzi SSL:

Configurazione di SSL per il modulo Dispatcher

Per configurare Dispatcher per l’utilizzo di SSL reciproco, prepara il certificato di Dispatcher, quindi configura il modulo server web.

Creazione di un certificato di Dispatcher unificato

Combina il certificato di Dispatcher e la chiave privata non crittografata in un unico file PEM. Utilizza un editor di testo o il comando cat per creare un file simile a quello del seguente esempio:

  1. Apri un terminale e cambia la directory corrente con quella che contiene il file dispatkey.pem.

  2. Per decrittografare la chiave privata, immetti il comando seguente:

    openssl rsa -in dispkey.pem -out dispkey_unencrypted.pem
    
  3. Utilizza un editor di testo o il comando cat per combinare la chiave privata non crittografata e il certificato in un unico file simile a quello seguente esempio:

    -----BEGIN RSA PRIVATE KEY-----
    MIICxjBABgkqhkiG9w0B...
    ...M2HWhDn5ywJsX
    -----END RSA PRIVATE KEY-----
    -----BEGIN CERTIFICATE-----
    MIIC3TCCAk...
    ...roZAs=
    -----END CERTIFICATE-----
    

Specifica del certificato da utilizzare per Dispatcher

Aggiungi le seguenti proprietà alla configurazione del modulo Dispatcher (nel file httpd.conf):

  • DispatcherCertificateFile: percorso del file del certificato unificato di Dispatcher contenente il certificato pubblico e la chiave privata non crittografata. Questo file viene utilizzato quando il server SSL richiede il certificato del client di Dispatcher.
  • DispatcherCACertificateFile: percorso del file del certificato CA utilizzato se il server SSL presenta una CA non attendibile da un'autorità radice.
  • DispatcherCheckPeerCN: determina se abilitare (On) o disabilitare (Off) la verifica del nome host per i certificati del server remoto.

Il codice che segue è un esempio di configurazione:

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

In questa pagina