Utilizzo di SSL con Dispatcher using-ssl-with-dispatcher
Utilizza connessioni SSL tra Dispatcher e il computer di rendering:
Utilizza SSL quando Dispatcher si connette a AEM use-ssl-when-dispatcher-connects-to-aem
Configura Dispatcher per comunicare con l’istanza di rendering AEM o CQ utilizzando connessioni SSL.
Prima di configurare Dispatcher, configura AEM o CQ per l’utilizzo di SSL. Per ulteriori informazioni, consulta:
Intestazioni di richiesta correlate a SSL ssl-related-request-headers
Quando il 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 configuring-dispatcher-to-use-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à denominatasecure
con valore1
.
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 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
}
Configurazione di SSL reciproco tra Dispatcher e AEM configuring-mutual-ssl-between-dispatcher-and-aem
Per utilizzare l’autenticazione SSL reciproca, configura le connessioni tra il Dispatcher e il computer di rendering (in genere un’istanza di pubblicazione AEM o CQ):
- 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
Per configurare l’autenticazione SSL reciproca, esegui i seguenti passaggi:
- 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
). - Crea o ottieni un certificato firmato dalla CA per Dispatcher e l’istanza di rendering.
- Crea un archivio chiavi contenente il certificato di rendering e configura il servizio HTTP del rendering.
- Configura il modulo server Web di Dispatcher per SSL reciproco.
Creazione o conseguimento di certificati firmati da una CA creating-or-obtaining-ca-signed-certificates
Crea o ottieni i certificati firmati da una CA che autentichino l’istanza di pubblicazione e di Dispatcher.
Creazione della tua CA creating-your-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.
-
Apri un terminale e cambia la directory corrente con la directory che contiene il file
CA.sh
, ad esempio/usr/local/ssl/misc
. -
Per creare la CA, immetti il seguente comando, quindi specifica i valori quando ti viene richiesto:
code language-shell ./CA.sh -newca
note note NOTE Diverse proprietà nel file openssl.cnf
controllano il comportamento dello script CA.sh. Modifica questo file come necessario prima di creare la CA.
Creazione dei certificati creating-the-certificates
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 nome comune se configuri Dispatcher per accettare il certificato. Esegui questa operazione solo se corrisponde al nome host dell’istanza di pubblicazione. Consulta la proprietà DispatcherCheckPeerCN.
-
Apri un terminale e cambia la directory corrente con la directory che contiene il file CH.sh delle librerie OpenSSL.
-
Immetti il seguente comando e fornisci i valori quando richiesto. Se necessario, utilizza il nome host dell’istanza di pubblicazione come nome comune. Il nome host è un nome risolvibile DNS per l'indirizzo IP del rendering:
code language-shell ./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.
-
Per firmare il certificato utilizzando il certificato della CA, immetti il comando seguente:
code language-shell ./CA.sh -sign
Nella directory che contiene i file di gestione della CA vengono creati due file chiamati
newcert.pem
enewkey.pem
. Questi due file sono rispettivamente il certificato pubblico e la chiave privata per il computer di rendering. -
Rinomina
newcert.pem
inrendercert.pem
e rinominanewkey.pem
inrenderkey.pem
. -
Ripeti i passaggi 2 e 3 per creare un nuovo certificato e una nuova chiave pubblica per il modulo Dispatcher. Utilizzare un nome comune specifico per l’istanza di Dispatcher.
-
Rinomina
newcert.pem
indispcert.pem
e rinominanewkey.pem
indispkey.pem
.
Configurazione di SSL sul computer di rendering configuring-ssl-on-the-render-computer
Configura SSL sull’istanza di rendering utilizzando i file rendercert.pem
e renderkey.pem
.
Conversione del certificato di rendering in formato JKS (Java™ KeyStore) converting-the-render-certificate-to-jks-format
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:
-
In una finestra del terminale, cambia la directory corrente con quella che contiene il certificato di rendering e la chiave privata.
-
Per convertire il certificato di rendering, che è un file PEM, in un file PKCS#12, immetti il comando seguente. Includi anche il certificato della CA che ha firmato il certificato di rendering:
code language-shell openssl pkcs12 -export -in rendercert.pem -inkey renderkey.pem -certfile demoCA/cacert.pem -out rendercert.p12
-
Per convertire il file PKCS#12 in formato Java™ KeyStore (JKS), immetti il seguente comando:
code language-shell keytool -importkeystore -srckeystore servercert.p12 -srcstoretype pkcs12 -destkeystore render.keystore
-
Il file Java™ Keystore viene creato utilizzando un alias predefinito. Se vuoi, puoi modificare l’alias:
code language-shell keytool -changealias -alias 1 -destalias jettyhttp -keystore render.keystore
Aggiunta del certificato CA al truststore del rendering adding-the-ca-cert-to-the-render-s-truststore
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.
-
Utilizza un editor di testo per aprire il file cacert.pem e rimuovere tutto il testo che precede la seguente riga:
-----BEGIN CERTIFICATE-----
-
Utilizza il seguente comando per importare il certificato in un keystore:
code language-shell keytool -import -keystore cacerts.keystore -alias myca -storepass password -file cacert.pem
-
Per configurare la JVM che esegue l'istanza di rendering in modo che consideri attendibile il keystore, utilizza la seguente proprietà di sistema:
code language-shell -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:
code language-shell 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 configuring-the-render-instance
Per configurare il servizio HTTP dell’istanza di rendering per l’utilizzo di SSL, utilizza il certificato di rendering con le istruzioni contenute nella sezione Enable SSL on the Publish Instance
:
- AEM 6.2: abilitazione di HTTP su SSL
- AEM 6.1: abilitazione di HTTP su SSL
- Versioni precedenti di AEM: visita questa pagina.
Configurazione di SSL per il modulo Dispatcher configuring-ssl-for-the-dispatcher-module
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 creating-a-unified-dispatcher-certificate
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:
-
Apri un terminale e cambia la directory corrente con quella che contiene il file dispatkey.pem.
-
Per decrittografare la chiave privata, immetti il comando seguente:
code language-shell openssl rsa -in dispkey.pem -out dispkey_unencrypted.pem
-
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:code language-xml -----BEGIN RSA PRIVATE KEY----- MIICxjBABgkqhkiG9w0B... ...M2HWhDn5ywJsX -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIC3TCCAk... ...roZAs= -----END CERTIFICATE-----
Specifica del certificato da utilizzare per Dispatcher specifying-the-certificate-to-use-for-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 considerata attendibile da un’autorità principale.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>