Show Menu
TEMAS×

SSL de forma predeterminada

Con el fin de mejorar continuamente la seguridad de AEM, Adobe ha introducido una función denominada SSL de forma predeterminada. El propósito es fomentar el uso de HTTPS para conectarse a instancias de AEM.

Habilitar SSL de forma predeterminada

Puede empezar a configurar SSL de forma predeterminada haciendo clic en el mensaje Bandeja de entrada correspondiente en la pantalla de inicio de AEM. Para acceder a la Bandeja de entrada, pulse el icono de la campana en la esquina superior derecha de la pantalla. A continuación, haga clic en Ver todo . Esto mostrará una lista de todas las alertas ordenadas en una vista de lista.
En la lista, seleccione y abra la alerta Configurar HTTPS :
Si la alerta Configurar HTTPS no está presente en la Bandeja de entrada, puede navegar directamente al Asistente para HTTPS si ingresa a
Se ha creado un usuario de servicio llamado ssl-service para esta función. Una vez que abra la alerta, se le guiará a través del siguiente asistente de configuración:
  1. Primero, configure las credenciales de la tienda. Son las credenciales del almacén de claves del usuario del sistema de ssl-service que contendrán la clave privada y el almacén de confianza para el detector HTTPS.
  2. Una vez ingresadas las credenciales, haga clic en Siguiente en la esquina superior derecha de la página. A continuación, cargue la clave privada y el certificado asociados para la conexión SSL.
    Para obtener información sobre cómo generar una clave privada y un certificado para usar con el asistente, consulte este procedimiento a continuación.
  3. Por último, especifique el nombre de host HTTPS y el puerto TCP para el detector HTTPS.

Automatización de SSL de forma predeterminada

Existen tres maneras de automatizar SSL de manera predeterminada.

Mediante HTTP POST

El primer método implica la publicación en el servidor SSLSetup que está utilizando el asistente de configuración:
POST /libs/granite/security/post/sslSetup.html

Puede utilizar la siguiente carga útil en su POST para automatizar la configuración:
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="keystorePassword"

test
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="keystorePasswordConfirm"
test
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="truststorePassword"
test
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="truststorePasswordConfirm"
test
------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="privatekeyFile"; filename="server.der"
Content-Type: application/x-x509-ca-cert

------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="certificateFile"; filename="server.crt"
Content-Type: application/x-x509-ca-cert

------WebKitFormBoundaryyBO4ArmGlcfdGDbs
Content-Disposition: form-data; name="httpsPort"
8443

El servlet, como cualquier servlet sling POST, responderá con 200 OK o con un código de estado HTTP de error. Puede encontrar detalles sobre el estado en el cuerpo HTML de la respuesta.
A continuación se muestran ejemplos de una respuesta correcta y de un error.
EJEMPLO DE ÉXITO (estado = 200):
<!DOCTYPE html>
<html lang='en'>
<head>
<title>OK</title>
</head>
<body>
<h1>OK</h1>
<dl>
<dt class='foundation-form-response-status-code'>Status</dt>
<dd>200</dd>
<dt class='foundation-form-response-status-message'>Message</dt>
<dd>SSL successfully configured</dd>
<dt class='foundation-form-response-title'>Title</dt>
<dd>OK</dd>
<dt class='foundation-form-response-description'>Description</dt>
<dd>HTTPS has been configured on port 8443. The private key and
certificate were stored in the key store of the user ssl-service.
Please take note of the key store password you provided. You will need
it for any subsequent updating of the private key or certificate.</dd>
</dl>
<h2>Links</h2>
<ul class='foundation-form-response-links'>
<li><a class='foundation-form-response-redirect' href='/'>Done</a></li>
</ul>
</body>
</html>

EJEMPLO DE ERROR (status = 500):
<!DOCTYPE html>
<html lang='en'>
<head>
<title>Error</title>
</head>
<body>
<h1>Error</h1>
<dl>
<dt class='foundation-form-response-status-code'>Status</dt>
<dd>500</dd>
<dt class='foundation-form-response-status-message'>Message</dt>
<dd>The provided file is not a valid key, DER format expected</dd>
<dt class='foundation-form-response-title'>Title</dt>
<dd>Error</dd>
</dl>
</body>
</html>

Vía paquete

También puede automatizar la configuración de SSL cargando un paquete que ya contiene estos elementos necesarios:
  • El almacén de claves del usuario del servicio ssl. Se encuentra en /home/users/system/security/ssl-service/keystore en el repositorio.
  • La GraniteSslConnectorFactory configuración

Generación de un par de clave/certificado privado para utilizarlo con el Asistente

A continuación encontrará un ejemplo para crear un certificado autofirmado en formato DER que puede utilizar el Asistente para SSL.
El uso de un certificado con firma automática es sólo para fines de ejemplo y no debe utilizarse en la producción.
  1. En primer lugar, cree la clave privada:
    openssl genrsa -aes256 -out localhostprivate.key 4096
    openssl rsa -in localhostprivate.key -out localhostprivate.key
    
    
  2. A continuación, genere una solicitud de firma de certificado (CSR) utilizando la clave privada:
    openssl req -sha256 -new -key localhostprivate.key -out localhost.csr -subj '/CN=localhost'
    
    
  3. Genere el certificado SSL y fírmelo con la clave privada. En este ejemplo, caducará dentro de un año:
    openssl x509 -req -days 365 -in localhost.csr -signkey localhostprivate.key -out localhost.crt
    
    
Convertir la clave privada al formato DER. Esto se debe a que el asistente SSL requiere que la clave esté en formato DER:
openssl pkcs8 -topk8 -inform PEM -outform DER -in localhostprivate.key -out localhostprivate.der -nocrypt

Finalmente, cargue localhostprivate.der como Private Key y localhost.crt como el certificado SSL en el paso 2 del Asistente gráfico SSL descrito al principio de esta página.

Actualización de la configuración SSL mediante cURL

Consulte Uso de cURL con AEM para obtener una lista centralizada de comandos cURL útiles en AEM.
También puede automatizar la configuración SSL mediante la herramienta cURL. Para ello, publique los parámetros de configuración en esta dirección URL:
https://<serveraddress>:<serverport>/libs/granite/security/post/sslSetup.html
A continuación se muestran los parámetros que puede utilizar para cambiar las distintas opciones del asistente de configuración:
  • -F "keystorePassword=password" - la contraseña del almacén de claves;
  • -F "keystorePasswordConfirm=password" - confirmar la contraseña del almacén de claves;
  • -F "truststorePassword=password" - la contraseña del almacén de confianza;
  • -F "truststorePasswordConfirm=password" - Confirmar la contraseña del almacén de confianza;
  • -F " privatekeyFile=@localhostprivate.der " - especificar la clave privada;
  • -F " certificateFile=@localhost.crt " - especificar el certificado;
  • -F "httpsHostname=host.example.com" - especificar el nombre del host;
  • -F "httpsPort=8443" - el puerto en el que funcionará el detector HTTPS.
La forma más rápida de ejecutar cURL para automatizar la configuración SSL es desde la carpeta donde se encuentran los archivos DER y CRT. También puede especificar la ruta completa en los argumentos privatekeyFile y certificateFile.
También es necesario autenticarse para realizar la actualización, por lo que debe adjuntar el comando cURL con el -u user:passeword parámetro .
Un comando cURL posterior correcto debería tener este aspecto:
curl -u user:password -F "keystorePassword=password" -F "keystorePasswordConfirm=password" -F "truststorePassword=password" -F "truststorePasswordConfirm=password" -F "privatekeyFile=@localhostprivate.der" -F "certificateFile=@localhost.crt" -F "httpsHostname=host.example.com" -F "httpsPort=8443" https://host:port/libs/granite/security/post/sslSetup.html

Varios certificados con cURL

Puede enviar el servlet una cadena de certificados repitiendo el parámetro certificateFile de esta forma:
Una vez ejecutado el comando, compruebe que todos los certificados hayan llegado al almacén de claves. Compruebe el almacén de claves desde: http://localhost:4502/libs/granite/security/content/userEditor.html/home/users/system/security/ssl-service