Show Menu
ARGOMENTI×

SSL per impostazione predefinita

Nel tentativo di migliorare costantemente la sicurezza di AEM, Adobe ha introdotto una funzione denominata SSL per impostazione predefinita. Lo scopo è incoraggiare l'uso di HTTPS per connettersi alle istanze AEM.

Abilitazione di SSL per impostazione predefinita

Per iniziare a configurare SSL per impostazione predefinita, fai clic sul messaggio Inbox corrispondente nella schermata iniziale di AEM. Per raggiungere la casella in entrata, premere l'icona a forma di campana nell'angolo superiore destro dello schermo. Quindi fate clic su Visualizza tutto . Verrà visualizzato un elenco di tutti gli avvisi ordinati in una vista a elenco.
Nell'elenco, selezionare e aprire l'avviso Configura HTTPS :
Per questa funzione è stato creato un utente di servizio denominato ssl-service . Una volta aperto l’avviso, verrà visualizzata la seguente procedura guidata di configurazione:
  1. Innanzitutto, impostare le credenziali store. Queste sono le credenziali per l'archivio chiavi dell'utente del sistema ssl-service che conterrà la chiave privata e l'archivio di attendibilità per il listener HTTPS.
  2. Una volta immesse le credenziali, fate clic su Avanti nell’angolo in alto a destra della pagina. Quindi, caricate la chiave privata e il certificato associati per la connessione SSL.
    Per informazioni su come generare una chiave privata e un certificato da utilizzare con la procedura guidata, consulta questa procedura .
  3. Infine, specificate il nome host HTTPS e la porta TCP per il listener HTTPS.

Automatizzare SSL per impostazione predefinita

Sono disponibili tre modi per automatizzare SSL per impostazione predefinita.

Tramite HTTP POST

Il primo metodo prevede l'invio al server SSLSetup utilizzato dalla configurazione guidata:
POST /libs/granite/security/post/sslSetup.html

Potete utilizzare il payload seguente nel POST per automatizzare la configurazione:
------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

Il servlet, come qualsiasi servlet POST Sling, risponderà con 200 OK o un codice di stato HTTP di errore. Potete trovare i dettagli sullo stato nel corpo HTML della risposta.
Di seguito sono riportati alcuni esempi di risposta corretta e di errore.
ESEMPIO DI SUCCESSO (stato = 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>

ESEMPIO DI ERRORE (stato = 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>

Tramite pacchetto

In alternativa, potete automatizzare la configurazione SSL caricando un pacchetto che contiene già i seguenti elementi richiesti:
  • Keystore dell'utente ssl-service. Questo si trova in /home/users/system/security/ssl-service/keystore nella directory archivio.
  • La GraniteSslConnectorFactory configurazione

Generazione di una coppia chiave/certificato privata da utilizzare con la procedura guidata

Di seguito è riportato un esempio per la creazione di un certificato autofirmato in formato DER utilizzabile dalla procedura guidata SSL.
L'uso di un certificato autofirmato è ad esempio solo a scopo e non deve essere utilizzato in produzione.
  1. Innanzitutto, create la chiave privata:
    openssl genrsa -aes256 -out localhostprivate.key 4096
    openssl rsa -in localhostprivate.key -out localhostprivate.key
    
    
  2. Quindi, generate una richiesta di firma dei certificati (CSR) utilizzando la chiave privata:
    openssl req -sha256 -new -key localhostprivate.key -out localhost.csr -subj '/CN=localhost'
    
    
  3. Generate il certificato SSL e firmatelo con la chiave privata. In questo esempio, scadrà tra un anno:
    openssl x509 -req -days 365 -in localhost.csr -signkey localhostprivate.key -out localhost.crt
    
    
Converti la chiave privata in formato DER. Questo perché la procedura guidata SSL richiede che la chiave sia in formato DER:
openssl pkcs8 -topk8 -inform PEM -outform DER -in localhostprivate.key -out localhostprivate.der -nocrypt

Infine, caricate localhostprivate.der come Chiave privata e localhost.crt come Certificato SSL nel passaggio 2 della procedura guidata SSL grafica descritta all’inizio di questa pagina.

Aggiornamento della configurazione SSL tramite cURL

Consultate Utilizzo di cURL con AEM per un elenco centralizzato di utili comandi cURL in AEM.
Potete anche automatizzare la configurazione SSL usando lo strumento cURL. A questo scopo, potete inserire i parametri di configurazione nel seguente URL:
https://<serveraddress>:<serverport>/libs/granite/security/post/sslSetup.html
Di seguito sono riportati i parametri che potete usare per modificare le varie impostazioni della procedura guidata di configurazione:
  • -F "keystorePassword=password" - la password del keystore;
  • -F "keystorePasswordConfirm=password" - confermare la password del keystore;
  • -F "truststorePassword=password" - la password del trust store;
  • -F "truststorePasswordConfirm=password" - confermare la password del trust store;
  • -F " privatekeyFile=@localhostprivate.der " - specificare la chiave privata;
  • -F " certificateFile=@localhost.crt " - specificare il certificato;
  • -F "httpsHostname=host.example.com" - specificare il nome host;
  • -F "httpsPort=8443" - la porta su cui lavorerà il listener HTTPS.
Il modo più veloce per eseguire cURL per automatizzare la configurazione SSL è dalla cartella in cui si trovano i file DER e CRT. In alternativa, è possibile specificare il percorso completo negli argomenti privatekeyFile e certificateFile.
Per eseguire l'aggiornamento è inoltre necessario essere autenticati, quindi assicurarsi di aggiungere il comando cURL con il -u user:passeword parametro.
Il comando cURL post corretto dovrebbe essere simile al seguente:
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

Più certificati mediante cURL

Potete inviare il servlet a una catena di certificati ripetendo il parametro certificateFile come segue:
Dopo aver eseguito il comando, verificate che tutti i certificati siano stati inviati all'archivio chiavi. Controllare l'archivio di chiavi da: http://localhost:4502/libs/granite/security/content/userEditor.html/home/users/system/security/ssl-service