Utilizar SSL con Dispatcher

Utilice conexiones SSL entre Dispatcher y el equipo de procesamiento:

NOTA

Las operaciones relacionadas con los certificados SSL están vinculadas a productos de terceros. No están cubiertos por el Contrato de Mantenimiento y
Soporte Platino de Adobe.

Usar SSL cuando Dispatcher se conecta a AEM

Configure Dispatcher para que se comunique con la instancia de procesamiento de AEM o CQ mediante conexiones SSL.

Antes de configurar Dispatcher, configure AEM o CQ para utilizar SSL:

Cuando Dispatcher recibe una solicitud HTTPS, Dispatcher incluye los siguientes encabezados en la solicitud posterior que envía a AEM o CQ:

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

Una solicitud a través de Apache-2.4 con mod_ssl incluye encabezados similares al del siguiente ejemplo:

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

Configurar Dispatcher para usar SSL

Para configurar Dispatcher para que se conecte con AEM o CQ a través de SSL, su archivo dispatcher.any necesita las siguientes propiedades:

  • Host virtual que administra solicitudes HTTPS.
  • La sección renders del host virtual incluye un elemento que identifica el nombre de host y el puerto de la instancia de CQ o AEM que utiliza HTTPS.
  • El elemento renders incluye una propiedad denominada secure de valor 1.

Nota: Cree otro host virtual para administrar solicitudes HTTP si fuera necesario.

En el siguiente ejemplo, el archivo dispatcher.any muestra los valores de propiedad para la conexión mediante HTTPS a una instancia de CQ que se ejecuta en el host localhost y en el puerto 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
}

Configurar un SSL mutuo entre Dispatcher y AEM

Configure las conexiones entre Dispatcher y el equipo de procesamiento (normalmente una instancia de publicación de AEM o CQ) para utilizar SSL mutuo:

  • Dispatcher se conecta a la instancia de procesamiento a través de SSL.
  • La instancia de procesamiento comprueba la validez del certificado de Dispatcher.
  • Dispatcher comprueba que la CA del certificado de la instancia de procesamiento es de confianza.
  • (Opcional) Dispatcher comprueba que el certificado de la instancia de procesamiento coincide con la dirección del servidor de la instancia de procesamiento.

Para configurar SSL mutuo, necesita certificados firmados por una autoridad de certificación (CA) de confianza. Los certificados autofirmados no son adecuados. Puede actuar como CA o utilizar los servicios de una CA de terceros para firmar sus certificados. Para configurar SSL mutuo, necesita los siguientes elementos:

  • Certificados firmados para la instancia de procesamiento y Dispatcher
  • El certificado de CA (si actúa como CA)
  • Abra las bibliotecas OpenSSL para generar la CA, los certificados y las solicitudes de certificado.

Realice los siguientes pasos para configurar SSL mutuo:

  1. Instale la última versión de Dispatcher para su plataforma. Utilice un binario de Dispatcher que admita SSL (SSL está en el nombre del archivo, como dispatcher-apache2.4-linux-x86-64-ssl10-4.1.7.tar).
  2. Cree o consiga un certificado firmado por la CA para Dispatcher y la instancia de procesamiento.
  3. Cree un repositorio de claves que contenga certificados de procesamiento y configure el servicio HTTP del procesamiento para utilizarlo.
  4. Configure el módulo del servidor web de Dispatcher para SSL mutuo.

Crear o conseguir certificados firmados por la CA

Cree o consiga los certificados firmados por la CA que autentican la instancia de publicación y Dispatcher.

Crear su CA

Si actúa como CA, utilice OpenSSL para crear la autoridad de certificación que firme los certificados de servidor y cliente. (Debe tener instaladas las bibliotecas OpenSSL). Si utiliza una CA de terceros, no realice este procedimiento.

  1. Abra un terminal y cambie el directorio actual al que contenga el archivo CA.sh, como /usr/local/ssl/misc.

  2. Para crear la CA, introduzca el siguiente comando y, a continuación, proporcione los valores cuando se le solicite:

    ./CA.sh -newca
    
    NOTA

    Varias propiedades del archivo openssl.cnf controlan el comportamiento del script CA.sh. Debe modificar este archivo según sea necesario antes de crear su CA.

Crear certificados

Utilice OpenSSL para crear las solicitudes de certificado que se enviarán a la CA de terceros o para firmar con la CA.

Al crear un certificado, OpenSSL utiliza la propiedad Nombre común para identificar al titular del certificado. Para el certificado de la instancia de procesamiento, utilice el nombre de host del equipo de instancia como Nombre común si está configurando Dispatcher para aceptar el certificado, solo si coincide con el nombre de host de la instancia de publicación. (Consulte la propiedad DispatcherCheckPeerCN).

  1. Abra un terminal y cambie el directorio actual al que contenga el archivo CH.sh de sus bibliotecas OpenSSL.

  2. Introduzca el siguiente comando y proporcione los valores cuando se le solicite. Si es necesario, utilice el nombre de host de la instancia de publicación como Nombre común. El nombre de host es un nombre con resolución DNS para la dirección IP del procesamiento:

    ./CA.sh -newreq
    

    Si utiliza una CA de terceros, envíe el archivo newreq.pem a la CA para que lo firme. Si actúa como CA, avance al paso 3.

  3. Introduzca el siguiente comando para firmar el certificado mediante el certificado de su CA:

    ./CA.sh -sign
    

    Se crearán dos archivos llamados newcert.pem y newkey.pem en el directorio que contenga sus archivos de administración de la CA. Son el certificado público y la clave privada del equipo de procesamiento, respectivamente.

  4. Cambie el nombre de newcert.pem a rendercert.pem y el de newkey.pem a renderkey.pem.

  5. Repita los pasos 2 y 3 para crear un nuevo certificado y una nueva clave pública para el módulo de Dispatcher. Asegúrese de utilizar un nombre común específico de la instancia de Dispatcher.

  6. Cambie el nombre de newcert.pem a dispcert.pem y el de newkey.pem a dispkey.pem.

Configurar SSL en el equipo de procesamiento

Configure SSL en la instancia de procesamiento utilizando los archivos rendercert.pem y renderkey.pem.

Convertir el certificado de procesamiento al formato JKS

Utilice el siguiente comando para convertir el certificado de procesamiento, que es un archivo PEM, a un archivo PKCS#12. Incluya también el certificado de la CA que firmó el certificado de procesamiento:

  1. En una ventana del terminal, cambie el directorio actual a la ubicación del certificado de procesamiento y la clave privada.

  2. Introduzca el siguiente comando para convertir el certificado de procesamiento, que es un archivo PEM, a un archivo PKCS#12. Incluya también el certificado de la CA que firmó el certificado de procesamiento:

    openssl pkcs12 -export -in rendercert.pem -inkey renderkey.pem  -certfile demoCA/cacert.pem -out rendercert.p12
    
  3. Introduzca el siguiente comando para convertir el archivo PKCS#12 al formato Java KeyStore (JKS):

    keytool -importkeystore -srckeystore servercert.p12 -srcstoretype pkcs12 -destkeystore render.keystore
    
  4. El Java Keystore se crea con un alias predeterminado. Puede cambiar el alias si lo desea:

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

Añadir el certificado de CA al truststore del procesador.

Si actúa como CA, importe el certificado de CA a un repositorio de claves. A continuación, configure la JVM que ejecuta la instancia de procesamiento para confiar en el repositorio de claves.

  1. Utilice un editor de texto para abrir el archivo cacert.pem y eliminar todo el texto que preceda a la siguiente línea:

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

  2. Utilice el siguiente comando para importar el certificado en un repositorio de claves:

    keytool -import -keystore cacerts.keystore -alias myca -storepass password -file cacert.pem
    
  3. Para configurar la JVM que ejecuta la instancia de procesamiento para que confíe en el repositorio de claves, utilice la siguiente propiedad del sistema:

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

    Por ejemplo, si utiliza el script crx-quickstart/bin/quickstart para iniciar la instancia de publicación, puede modificar la propiedad CQ_JVM_OPTS:

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

Configurar la instancia de procesamiento

Utilice el certificado de procesamiento con las instrucciones de la sección Habilitar SSL en la instancia de publicación para configurar el servicio HTTP de la instancia de procesamiento para utilizar SSL:

Configurar SSL para el módulo de Dispatcher

Para configurar Dispatcher para que utilice SSL mutuo, prepare el certificado de Dispatcher y, a continuación, configure el módulo del servidor web.

Crear un certificado de Dispatcher unificado

Combine el certificado de Dispatcher y la clave privada no cifrada en un solo archivo PEM. Utilice un editor de texto o el comando cat para crear un archivo similar al siguiente ejemplo:

  1. Abra un terminal y cambie el directorio actual a la ubicación del archivo dispkey.pem.

  2. Para desencriptar la clave privada, introduzca el siguiente comando:

    openssl rsa -in dispkey.pem -out dispkey_unencrypted.pem
    
  3. Utilice un editor de texto o el comando cat para combinar la clave privada no cifrada y el certificado en un solo archivo similar al siguiente ejemplo:

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

Especificar el certificado que se va a usar para Dispatcher

Agregue las siguientes propiedades a la configuración del módulo Dispatcher (en httpd.conf):

  • DispatcherCertificateFile: Ruta al archivo de certificado unificado de Dispatcher que contiene el certificado público y la clave privada no cifrada. Este archivo se utiliza cuando el servidor SSL solicita el certificado de cliente de Dispatcher.
  • DispatcherCACertificateFile: La ruta al archivo de certificado de la CA, utilizada si el servidor SSL presenta una CA en la que no confía una autoridad raíz.
  • DispatcherCheckPeerCN: Si se habilita (On) o se deshabilita (Off) la comprobación de nombres de host para certificados de servidor remoto.

El siguiente código es un ejemplo de configuración:

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

En esta página