SSL som standard ssl-by-default

CAUTION
AEM 6.4 har nått slutet på den utökade supporten och denna dokumentation är inte längre uppdaterad. Mer information finns i teknisk supportperiod. Hitta de versioner som stöds här.

I ett försök att kontinuerligt förbättra AEM säkerhet har Adobe introducerat en funktion som kallas SSL som standard. Syftet är att uppmuntra användningen av HTTPS för att ansluta till AEM instanser.

Aktivera SSL som standard enabling-ssl-by-default

Du kan börja konfigurera SSL som standard genom att klicka på det relevanta inkorgsmeddelandet från AEM startskärm. Tryck på klockikonen i skärmens övre högra hörn för att nå Inkorgen. Klicka sedan på Visa alla. Då visas en lista med alla aviseringar som har beställts i en listvy.

Markera och öppna Konfigurera HTTPS varning:

chlimage_1-341

[OBS!]

Om Konfigurera HTTPS ingen varning finns i Inkorgen. Du kan navigera direkt till HTTPS-guiden genom att gå till http://serveraddress:serverport/libs/granite/security/content/sslConfig.html?item=configuration%2Fconfiguressl&_charset_=utf-8

En tjänstanvändare ringde ssl-service har skapats för den här funktionen. När du har öppnat aviseringen vägleds du genom följande konfigurationsguide:

  1. Konfigurera först arkivautentiseringsuppgifterna. Detta är autentiseringsuppgifterna för ssl-service systemanvändarens nyckelarkiv som kommer att innehålla den privata nyckeln och förtroendearkivet för HTTPS-avlyssnaren.

    chlimage_1-342

  2. När du har angett inloggningsuppgifterna klickar du på Nästa i det övre högra hörnet på sidan. Ladda sedan upp den associerade privata nyckeln och certifikatet för SSL-anslutningen.

    chlimage_1-343

    note note
    NOTE
    Mer information om hur du skapar en privat nyckel och ett certifikat som ska användas med guiden finns i detta förfarande nedan.
  3. Slutligen anger du HTTPS-värdnamnet och TCP-porten för HTTPS-avlyssnaren.

    screen_shot_2018-07-25at31658pm

Automatiserar SSL som standard automating-ssl-by-default

Det finns tre sätt att automatisera SSL som standard.

Via HTTP-POST via-http-post

Den första metoden innebär publicering till SSLSetup-servern som används av konfigurationsguiden:

POST /libs/granite/security/post/sslSetup.html

Du kan använda följande nyttolast i POSTEN för att automatisera konfigurationen:

------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

Servern kommer, precis som vilken server som helst för POST av sling, att svara med 200 OK eller en felkod för HTTP-status. Du hittar information om status i svarets HTML.

Nedan finns exempel på både ett lyckat svar och ett fel.

EXEMPEL (status = 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>

FELEXEMPEL (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>

Via paket via-package

Du kan också automatisera SSL-konfigurationen genom att överföra ett paket som redan innehåller följande obligatoriska objekt:

  • SSL-service-användarens nyckelbehållare. Det här finns under /home/users/system/security/ssl-service/keystore i databasen.
  • The GraniteSslConnectorFactory konfiguration

Skapa en privat nyckel/ett certifikatpar som ska användas med guiden generating-a-private-key-certificate-pair-to-use-with-the-wizard

Här nedan hittar du ett exempel på hur du skapar ett självsignerat certifikat i DER-format som kan användas i SSL-guiden.

NOTE
Användningen av ett självsignerat certifikat är till exempel bara avsedd och bör inte användas i produktionen.
  1. Skapa först den privata nyckeln:

    code language-shell
    openssl genrsa -aes256 -out localhostprivate.key 4096
    openssl rsa -in localhostprivate.key -out localhostprivate.key
    
  2. Generera sedan en CSR-begäran (Certificate Signing Request) med hjälp av en privat nyckel:

    code language-shell
    openssl req -sha256 -new -key localhostprivate.key -out localhost.csr -subj '/CN=localhost'
    
  3. Generera SSL-certifikatet och signera det med den privata nyckeln. I det här exemplet upphör att gälla ett år från och med nu:

    code language-shell
    openssl x509 -req -days 365 -in localhost.csr -signkey localhostprivate.key -out localhost.crt
    

Konvertera den privata nyckeln till DER-format. Detta beror på att SSL-guiden kräver att nyckeln är i DER-format:

openssl pkcs8 -topk8 -inform PEM -outform DER -in localhostprivate.key -out localhostprivate.der -nocrypt

Till sist skickar du localhostprivate.der som den privata nyckeln och localhost.crt som SSL-certifikat i steg 2 i den grafiska SSL-guiden som beskrivs i början av den här sidan.

Uppdatera SSL-konfigurationen via cURL updating-the-ssl-configuration-via-curl

NOTE
Se Använda cURL med AEM om du vill ha en centraliserad lista med användbara cURL-kommandon i AEM.

Du kan också automatisera SSL-konfigurationen med verktyget cURL. Du kan göra detta genom att skicka konfigurationsparametrarna till den här URL

https://<serveraddress>:<serverport>/libs/granite/security/post/sslSetup.html

Nedan visas de parametrar du kan använda för att ändra de olika inställningarna i konfigurationsguiden:

  • -F "keystorePassword=password" - Nyckellagringslösenordet.

  • -F "keystorePasswordConfirm=password" - bekräfta lösenordet för nyckelbehållaren,

  • -F "truststorePassword=password" - lösenordet för förvaltararkivet,

  • -F "truststorePasswordConfirm=password" - bekräfta lösenordet för förtroendearkivet,

  • -F "privatekeyFile=@localhostprivate.der" - ange den privata nyckeln,

  • -F "certificateFile=@localhost.crt" - ange certifikatet,

  • -F "httpsHostname=host.example.com"- Ange värdnamnet.

  • -F "httpsPort=8443" - den port som HTTPS-avlyssnaren ska arbeta med.

NOTE
Det snabbaste sättet att köra cURL för att automatisera SSL-konfigurationen är från den mapp där DER- och CRT-filerna finns. Du kan också ange den fullständiga sökvägen i privatekeyFile och certificateFile-argument.
Du måste också vara autentiserad för att kunna utföra uppdateringen, så se till att du lägger till cURL-kommandot med -u user:passeword parameter.
Ett korrekt cURL-postkommando ska se ut så här:
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

Flera certifikat med cURL multiple-certificates-using-curl

Du kan skicka en certifikatkedja till servern genom att upprepa parametern certificateFile så här:

-F "certificateFile=@root.crt" -F "certificateFile=@localhost.crt"..

När du har kört kommandot kontrollerar du att alla certifikat har gjort det till nyckelbehållaren. Kontrollera nyckelbehållaren från:
http://localhost:4502/libs/granite/security/content/userEditor.html/home/users/system/security/ssl-service

recommendation-more-help
5ce3024a-cbea-458b-8b2f-f9b8dda516e8