SSL per impostazione predefinita ssl-by-default
Nel tentativo di migliorare continuamente la sicurezza di AEM, Adobe ha introdotto una funzione chiamata SSL By Default. Lo scopo è incoraggiare l’uso di HTTPS per connettersi alle istanze AEM.
Abilitazione di SSL per impostazione predefinita enabling-ssl-by-default
Per iniziare a configurare SSL per impostazione predefinita, fai clic sul messaggio casella in entrata corrispondente nella schermata iniziale AEM. Per raggiungere la casella in entrata, premere l'icona della campana nell'angolo superiore destro dello schermo. Quindi, fai clic su Visualizza tutto. Verrà visualizzato un elenco di tutti gli avvisi ordinati in una vista a elenco.
Nell’elenco, seleziona e apri le Configura HTTPS avviso:
[NOTA!]
Se la Configura HTTPS L'avviso non è presente nella casella in entrata, è possibile passare direttamente alla procedura guidata HTTPS andando a http://serveraddress:serverport/libs/granite/security/content/sslConfig.html?item=configuration%2Fconfiguressl&_charset_=utf-8
Utente di un servizio denominato servizio ssl è stato creato per questa funzione. Una volta aperto l’avviso, verrà visualizzata la seguente procedura guidata di configurazione:
-
Impostare innanzitutto le credenziali dell'archivio. Queste sono le credenziali per servizio ssl archivio chiavi dell'utente del sistema che conterrà la chiave privata e l'archivio di attendibilità per il listener HTTPS.
-
Una volta immesse le credenziali, fai clic su Successivo nell’angolo superiore destro della pagina. Quindi, carica la chiave privata e il certificato associati per la connessione SSL.
note note NOTE Per informazioni su come generare una chiave privata e un certificato da utilizzare con la procedura guidata, consulta presente procedura sotto. -
Infine, specifica il nome host HTTPS e la porta TCP per il listener HTTPS.
Automazione SSL per impostazione predefinita automating-ssl-by-default
Esistono tre modi per automatizzare SSL per impostazione predefinita.
Tramite HTTP POST via-http-post
Il primo metodo prevede la pubblicazione sul server SSLSetup utilizzato dalla configurazione guidata:
POST /libs/granite/security/post/sslSetup.html
Puoi utilizzare il seguente payload in 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 sling POST, risponderà con 200 OK o con un codice di stato HTTP di errore. Puoi 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 via-package
In alternativa, puoi automatizzare la configurazione SSL caricando un pacchetto che contiene già questi elementi richiesti:
- L'archivio chiavi dell'utente del servizio ssl. Si trova in /home/users/system/security/ssl-service/keystore nel repository.
- La
GraniteSslConnectorFactory
configurazione
Generazione di una coppia chiave/certificato privata 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 utilizzabile dalla procedura guidata SSL.
-
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 e firma 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:
openssl pkcs8 -topk8 -inform PEM -outform DER -in localhostprivate.key -out localhostprivate.der -nocrypt
Infine, carica il 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 updating-the-ssl-configuration-via-curl
Puoi anche automatizzare la configurazione SSL utilizzando lo strumento cURL. Per farlo, pubblica i parametri di configurazione in 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 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 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 funzionerà il listener HTTPS.
privatekeyFile
e gli argomenti certificateFile.-u user:passeword
parametro .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 riportato di seguito:
-F "certificateFile=@root.crt" -F "certificateFile=@localhost.crt"..
Dopo aver eseguito il comando, verifica che tutti i certificati siano stati inviati all'archivio chiavi. Controlla il keystore da:
http://localhost:4502/libs/granite/security/content/userEditor.html/home/users/system/security/ssl-service