SSL/TLS per impostazione predefinita ssl-tls-by-default
Nel tentativo di migliorare continuamente la sicurezza dell'AEM, Adobe ha introdotto una funzione chiamata SSL Per impostazione predefinita. L’obiettivo è incoraggiare l’utilizzo del protocollo HTTPS per connettersi alle istanze dell’AEM.
Abilitazione di SSL/TLS per impostazione predefinita enabling-ssl-tls-by-default
Puoi iniziare a configurare SSL/TLS per impostazione predefinita facendo clic sul messaggio della casella in entrata corrispondente nella schermata iniziale dell’AEM. Per raggiungere la Casella in entrata, premi l’icona a forma di campana nell’angolo superiore destro dello schermo. Quindi fare clic su Visualizza tutto. Viene visualizzato un elenco di tutti gli avvisi ordinati in una vista a elenco.
Nell'elenco, selezionare e aprire l'avviso Configura HTTPS:
Per questa funzionalità è stato creato un utente del servizio denominato ssl-service. Dopo aver aperto l’avviso, segui la procedura guidata di configurazione seguente:
-
Impostare innanzitutto le credenziali dell'archivio. Queste sono le credenziali per l'archivio chiavi del servizio ssl del sistema dell'utente che conterrà la chiave privata e l'archivio fonti attendibili per il listener HTTPS.
-
Dopo aver immesso le credenziali, fai clic su Avanti nell'angolo superiore destro della pagina. Quindi, carica la chiave privata e il certificato associati per la connessione SSL/TLS.
note note NOTE Per informazioni su come generare una chiave privata e un certificato da utilizzare con la procedura guidata, vedi questa procedura di seguito. -
Infine, specifica il nome host HTTPS e la porta TCP per il listener HTTPS.
Automatizzazione di SSL/TLS per impostazione predefinita automating-ssl-tls-by-default
Esistono tre modi per automatizzare SSL/TLS per impostazione predefinita.
Tramite HTTP POST via-http-post
Il primo metodo prevede la pubblicazione nel server SSLSetup utilizzato dalla procedura guidata di configurazione:
POST /libs/granite/security/post/sslSetup.html
Per automatizzare la configurazione, puoi utilizzare il seguente payload nel POST:
------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 di Sling, risponderà con 200 OK o un codice di stato HTTP di errore. Puoi trovare i dettagli sullo stato nel corpo HTML della risposta.
Di seguito sono riportati alcuni esempi sia di risposta corretta che 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.
Take note of the key store password you provided. You 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 via-package
In alternativa, puoi automatizzare la configurazione SSL/TLS caricando un pacchetto che contiene già gli elementi richiesti:
- Il keystore dell’utente ssl-service. Si trova in /home/users/system/security/ssl-service/keystore nell'archivio.
- Configurazione di
GraniteSslConnectorFactory
Generazione di una coppia chiave privata/certificato da utilizzare con la procedura guidata generating-a-private-key-certificate-pair-to-use-with-the-wizard
Di seguito è riportato un esempio per la creazione di un certificato autofirmato in formato DER che può essere utilizzato dalla procedura guidata SSL/TLS. Installa OpenSSL in base al sistema operativo, apri il prompt dei comandi OpenSSL e cambia la directory con la cartella in cui desideri generare la chiave privata o il certificato.
-
Innanzitutto, crea la chiave privata:
code language-shell openssl genrsa -aes256 -out localhostprivate.key 4096 openssl rsa -in localhostprivate.key -out localhostprivate.key
-
Quindi, genera una richiesta di firma del certificato (CSR, Certificate Signing Request) utilizzando una chiave privata:
code language-shell openssl req -sha256 -new -key localhostprivate.key -out localhost.csr -subj "/CN=localhost"
-
Genera il certificato SSL/TLS e firmalo con la chiave privata. In questo esempio, scadrà tra un anno:
code language-shell 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:
code language-shell openssl pkcs8 -topk8 -inform PEM -outform DER -in localhostprivate.key -out localhostprivate.der -nocrypt
-
Infine, carica localhostprivate.der come chiave privata e localhost.crt come certificato SSL/TLS nel passaggio 2 della procedura guidata SSL/TLS grafica descritta all'inizio di questa pagina.
Aggiornamento della configurazione SSL/TLS tramite cURL updating-the-ssl-tls-configuration-via-curl
Puoi anche automatizzare la configurazione SSL/TLS utilizzando lo strumento cURL. Per eseguire questa operazione, invia i parametri di configurazione a questo URL:
https://<serveraddress>:<serverport>/libs/granite/security/post/sslSetup.html
Di seguito sono riportati i parametri che è possibile utilizzare per modificare le varie impostazioni nella procedura guidata di configurazione:
-
-F "keystorePassword=password"
- password del keystore; -
-F "keystorePasswordConfirm=password"
- confermare la password del keystore; -
-F "truststorePassword=password"
- password del truststore; -
-F "truststorePasswordConfirm=password"
- confermare la password del truststore; -
-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.
privatekeyFile
e certificateFile.-u user:passeword
.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 utilizzando cURL multiple-certificates-using-curl
Puoi inviare al servlet una catena di certificati ripetendo il parametro certificateFile come segue:
-F "certificateFile=@root.crt" -F "certificateFile=@localhost.crt"..
Dopo aver eseguito il comando, verifica che tutti i certificati siano stati inseriti nel keystore. Controlla le voci Registro chiavi da:
http://localhost:4502/libs/granite/security/content/v2/usereditor.html/home/users/system/security/ssl-service
Abilitazione di una connessione TLS 1.3 enabling-tls-connection
-
Passa alla console Web
-
Quindi, passa a OSGi - Configurazione - Adobe Granite SSL Connector Factory
-
Vai al campo Suite di crittografia incluse e aggiungi le seguenti voci. È possibile confermare ogni aggiunta premendo il pulsante "+" a sinistra del campo, dopo averle aggiunte:
TLS_AES_256_GCM_SHA384
TLS_AES_128_GCM_SHA256
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_CCM_SHA256
TLS_AES_128_CCM_8_SHA256