Replicar usando SSL mutuo

Configure AEM para que un agente de replicación en la instancia de creación utilice SSL mutuo (MSSL) para conectarse con la instancia de publicación. Con MSSL, el agente de replicación y el servicio HTTP de la instancia de publicación utilizan certificados para autenticarse entre sí.

La configuración de MSSL para replicación implica realizar los siguientes pasos:

  1. Cree u obtenga claves y certificados privados para las instancias de creación y publicación.

  2. Instale las claves y los certificados en las instancias de creación y publicación:

    • Autor: Clave privada del autor y certificado de publicación.
    • Publicación: Clave privada de Publish y certificado del autor. El certificado está asociado a la cuenta de usuario autenticada con el agente de replicación.
  3. Configure el servicio HTTP basado en Jetty en la instancia de Publish.

  4. Configure las propiedades de transporte y SSL del agente de replicación.

chlimage_1-64

Debe determinar qué cuenta de usuario está realizando la replicación. Al instalar el certificado de autor de confianza en la instancia de publicación, el certificado se asocia a esta cuenta de usuario.

Obtención o creación de credenciales para MSSL

Se requiere una clave privada y un certificado público para las instancias de creación y publicación:

  • Las claves privadas deben estar incluidas en el formato pkcs#12 o JKS.
  • Los certificados deben estar en formato pkcs#12 o JKS. Además, el certificado contenido en formato "CER" también se puede agregar a Granite Truststore.
  • Los certificados pueden ser autofirmados o firmados por una CA reconocida.

Formato JKS

Genere una clave privada y un certificado en formato JKS. La clave privada se almacena en un archivo KeyStore y el certificado en un archivo TrustStore. Utilice Java keytool para crear ambos.

Realice los siguientes pasos con Java keytool para crear la clave privada y la credencial:

  1. Genere un par de clave pública-privada en KeyStore.

  2. Cree u obtenga el certificado:

    • Autofirmado: Exporte el certificado desde KeyStore.
    • Firmado por CA: Genere una solicitud de certificado y envíela a la CA.
  3. Importe el certificado en un TrustStore.

Utilice el procedimiento siguiente para crear una clave privada y un certificado autofirmado tanto para la instancia de autor como para la de publicación. Utilice valores diferentes para las opciones de comando según corresponda.

  1. Abra una ventana de línea de comandos o un terminal. Para crear el par de clave pública-privada, introduzca el siguiente comando, utilizando los valores de opción de la tabla siguiente:

    keytool -genkeypair -keyalg RSA -validity 3650 -alias alias -keystore keystorename.keystore  -keypass key_password -storepass  store_password -dname "CN=Host Name, OU=Group Name, O=Company Name,L=City Name, S=State, C=Country_ Code"
    
    Opción Autor Publicación
    -alias author instancias de publicación
    -keystore author.keystore publish.keystore
  2. Para exportar el certificado, introduzca el siguiente comando utilizando valores de opción de la tabla siguiente:

    keytool -exportcert -alias alias -file cert_file -storetype jks -keystore keystore -storepass store_password
    
    Opción Autor Publicación
    -alias author instancias de publicación
    -archivo author.cer publish.cer
    -keystore author.keystore publish.keystore

pkcs#12 Formato

Genere una clave privada y un certificado en formato pkcs#12. Utilice openSSL para generarlos. Utilice el procedimiento siguiente para generar una clave privada y una solicitud de certificado. Para obtener el certificado, firme la solicitud con su clave privada (certificado con firma automática) o envíe la solicitud a una CA. A continuación, genere el archivo pkcs#12 que contiene la clave privada y el certificado.

  1. Abra una ventana de línea de comandos o un terminal. Para crear la clave privada, introduzca el siguiente comando, utilizando los valores de opción de la tabla siguiente:

    openssl genrsa -out keyname.key 2048
    
    Opción Autor Publicación
    -out author.key publish.key
  2. Para generar una solicitud de certificado, introduzca el siguiente comando, utilizando los valores de opción de la tabla siguiente:

    openssl req -new -key keyname.key -out key_request.csr
    
    Opción Autor Publicación
    -key author.key publish.key
    -out author_request.csr publish_request.csr

    Firme la solicitud de certificado o envíe la solicitud a una entidad emisora de certificados.

  3. Para firmar la solicitud de certificado, introduzca el siguiente comando, utilizando los valores de opción de la tabla siguiente:

    openssl x509 -req -days 3650 -in key_request.csr -signkey keyname.key -out certificate.cer
    
    Opción Autor Publicación
    -signkey author.key publish.key
    -en author_request.csr publish_request.csr
    -out author.cer publish.cer
  4. Para agregar la clave privada y el certificado firmado a un archivo pkcs#12, introduzca el siguiente comando, utilizando valores de opción de la tabla siguiente:

    openssl pkcs12 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -in certificate.cer -inkey keyname.key -out pkcs12_archive.pfx -name "alias"
    
    Opción Autor Publicación
    -inkey author.key publish.key
    -out author.pfx publish.pfx
    -en author.cer publish.cer
    -name author instancias de publicación

Instalar la clave privada y TrustStore en el autor

Instale los siguientes elementos en la instancia de creación:

  • Clave privada de la instancia de creación.
  • El certificado de la instancia de publicación.

Para realizar el siguiente procedimiento, debe haber iniciado sesión como administrador de la instancia de creación.

Instalar la clave privada del autor

  1. Abra la página Administración de usuarios de la instancia de creación. (http://localhost:4502/libs/granite/security/content/useradmin.html)

  2. Para abrir las propiedades de su cuenta de usuario, toque o haga clic en su nombre de usuario.

  3. Si el vínculo Crear almacén de claves aparece en el área Configuración de la cuenta, haga clic en el vínculo. Configure una contraseña y haga clic en Aceptar.

  4. En el área Configuración de la cuenta, haga clic en Administrar almacén de claves.

    chlimage_1-65

  5. Haga clic en Añadir clave privada del archivo de almacén de claves.

    chlimage_1-66

  6. Haga clic en Seleccionar archivo de almacén de claves, busque y seleccione el archivo author.keystore o author.pfx si utiliza pkcs#12 y, a continuación, haga clic en Abrir.

  7. Introduzca un alias y la contraseña para el almacén de claves. Introduzca el alias y la contraseña de la clave privada y, a continuación, haga clic en Enviar.

  8. Cierre el cuadro de diálogo Administración de KeyStore.

    chlimage_1-67

Instalar el certificado de publicación

  1. Abra la página Administración de usuarios de la instancia de creación. (http://localhost:4502/libs/granite/security/content/useradmin.html)

  2. Para abrir las propiedades de su cuenta de usuario, toque o haga clic en su nombre de usuario.

  3. Si el vínculo Crear almacén de confianza aparece en el área Configuración de la cuenta, haga clic en el vínculo, cree una contraseña para el almacén de confianza y haga clic en Aceptar.

  4. En el área Configuración de la cuenta, haga clic en Administrar TrustStore.

  5. Haga clic en Añadir certificado del archivo CER.

    chlimage_1-68

  6. Desactive la opción Asignar certificado a usuario. Haga clic en Seleccionar archivo de certificado, seleccione publish.cer y haga clic en Abrir.

  7. Cierre el cuadro de diálogo Administración de almacén de confianza.

    chlimage_1-69

Instalar Clave privada y TrustStore en Publish

Instale los siguientes elementos en la instancia de publicación:

  • Clave privada de la instancia de publicación.
  • El certificado de la instancia de autor. Asocie el certificado al usuario que se utiliza para ejecutar solicitudes de replicación.

Para realizar el siguiente procedimiento, debe haber iniciado sesión como administrador de la instancia de publicación.

Instalar la clave privada de publicación

  1. Abra la página Administración de usuarios de la instancia de publicación. (http://localhost:4503/libs/granite/security/content/useradmin.html)
  2. Para abrir las propiedades de su cuenta de usuario, toque o haga clic en su nombre de usuario.
  3. Si el vínculo Crear almacén de claves aparece en el área Configuración de la cuenta, haga clic en el vínculo. Configure una contraseña y haga clic en Aceptar.
  4. En el área Configuración de la cuenta, haga clic en Administrar almacén de claves.
  5. Haga clic en Añadir clave privada del archivo de almacén de claves.
  6. Haga clic en Seleccionar archivo de almacén de claves, busque y seleccione el archivo publish.keystore o publish.pfx si utiliza pkcs#12 y, a continuación, haga clic en Abrir.
  7. Introduzca un alias y la contraseña para el almacén de claves. Introduzca el alias y la contraseña de la clave privada y, a continuación, haga clic en Enviar.
  8. Cierre el cuadro de diálogo Administración de KeyStore.

Instalar el certificado de autor

  1. Abra la página Administración de usuarios de la instancia de publicación. (http://localhost:4503/libs/granite/security/content/useradmin.html)
  2. Busque la cuenta de usuario que utiliza para ejecutar solicitudes de replicación y toque o haga clic en el nombre de usuario.
  3. Si el vínculo Crear almacén de confianza aparece en el área Configuración de la cuenta, haga clic en el vínculo, cree una contraseña para el almacén de confianza y haga clic en Aceptar.
  4. En el área Configuración de la cuenta, haga clic en Administrar TrustStore.
  5. Haga clic en Añadir certificado del archivo CER.
  6. Asegúrese de que la opción Asignar certificado a usuario está seleccionada. Haga clic en Seleccionar archivo de certificado, seleccione author.cer y haga clic en Abrir.
  7. Haga clic en Enviar y, a continuación, cierre el cuadro de diálogo Administración de TrustStore.

Configurar el servicio HTTP en la publicación

Configure las propiedades del servicio HTTP Apache Felix Jetty Based en la instancia de publicación para que utilice HTTPS al acceder a Granite Keystore. El PID del servicio es org.apache.felix.http.

La siguiente tabla lista las propiedades de OSGi que necesita para configurar si utiliza la consola web.

Nombre de propiedad en la consola web Nombre de propiedad OSGi Value
Habilitar HTTPS org.apache.felix.https.enable verdadero
Habilitar HTTPS para utilizar Granite KeyStore org.apache.felix.https.use.granite.keystore verdadero
Puerto HTTPS org.osgi.service.http.port.secure 8443 (u otro puerto deseado)
Certificado de cliente org.apache.felix.https.clientcertificate "Se busca certificado de cliente"

Configurar el agente de replicación en el autor

Configure el agente de replicación en la instancia de autor para que utilice el protocolo HTTPS al conectarse a la instancia de publicación. Para obtener información completa sobre la configuración de los agentes de replicación, consulte Configuración de los agentes de replicación.

Para habilitar MSSL, configure las propiedades en la ficha Transporte según la tabla siguiente:

Propiedad Valor
URI

https://server_name:SSL_port/bin/receive?sling:authRequestLogin=1

Por ejemplo:

http://localhost:8443/bin/receive?sling:authRequestLogin=1

Usuario Sin valor
Contraseña Sin valor
SSL Autenticación de cliente

chlimage_1-70

Después de configurar el agente de replicación, pruebe la conexión para determinar si MSSL está configurado correctamente.

29.08.2014 14:02:46 - Create new HttpClient for Default Agent
29.08.2014 14:02:46 - * HTTP Version: 1.1
29.08.2014 14:02:46 - * Using Client Auth SSL configuration *
29.08.2014 14:02:46 - adding header: Action:Test
29.08.2014 14:02:46 - adding header: Path:/content
29.08.2014 14:02:46 - adding header: Handle:/content
29.08.2014 14:02:46 - deserialize content for delivery
29.08.2014 14:02:46 - No message body: Content ReplicationContent.VOID is empty
29.08.2014 14:02:46 - Sending POST request to http://localhost:8443/bin/receive?sling:authRequestLogin=1
29.08.2014 14:02:46 - sent. Response: 200 OK
29.08.2014 14:02:46 - ------------------------------------------------
29.08.2014 14:02:46 - Sending message to localhost:8443
29.08.2014 14:02:46 - >> POST /bin/receive HTTP/1.0
29.08.2014 14:02:46 - >> Action: Test
29.08.2014 14:02:46 - >> Path: /content
29.08.2014 14:02:46 - >> Handle: /content
29.08.2014 14:02:46 - >> Referer: about:blank
29.08.2014 14:02:46 - >> Content-Length: 0
29.08.2014 14:02:46 - >> Content-Type: application/octet-stream
29.08.2014 14:02:46 - --
29.08.2014 14:02:46 - << HTTP/1.1 200 OK
29.08.2014 14:02:46 - << Connection: Keep-Alive
29.08.2014 14:02:46 - << Server: Day-Servlet-Engine/4.1.64
29.08.2014 14:02:46 - << Content-Type: text/plain;charset=utf-8
29.08.2014 14:02:46 - << Content-Length: 26
29.08.2014 14:02:46 - << Date: Fri, 29 Aug 2014 18:02:46 GMT
29.08.2014 14:02:46 - << Set-Cookie: login-token=3529326c-1500-4888-a4a3-93d299726f28%3ac8be86c6-04bb-4d18-80d6-91278e08d720_98797d969258a669%3acrx.default; Path=/; HttpOnly; Secure
29.08.2014 14:02:46 - << Set-Cookie: cq-authoring-mode=CLASSIC; Path=/; Secure
29.08.2014 14:02:46 - <<
29.08.2014 14:02:46 - << R
29.08.2014 14:02:46 - << eplicationAction TEST ok.
29.08.2014 14:02:46 - Message sent.
29.08.2014 14:02:46 - ------------------------------------------------
29.08.2014 14:02:46 - Replication (TEST) of /content successful.
Replication test succeeded

En esta página