Acest ghid vă arată cum să instalați un certificat SSL pe Heroku. Acoperă ambele metode prin care Heroku termină TLS în prezent: Automated Certificate Management (ACM), care emite și reînnoiește automat certificate gratuite Let’s Encrypt pentru dumneavoastră, și încărcarea manuală a unui certificat terț prin dashboard sau prin Heroku CLI.
Câteva lucruri de știut înainte de a începe. Add-on-ul legacy SSL Endpoint al Heroku (produsul plătit de 20 USD/lună) a fost întrerupt în 2021 și nu mai poate fi provizionat pe aplicații noi. Fiecare implementare HTTPS nouă folosește Heroku SSL, care se bazează pe extensia SNI (Server Name Indication) și este inclus fără cost adițional în orice nivel de dyno plătit. Dynos-urile gratuite au fost retrase pe 28 noiembrie 2022, deci aveți nevoie de un plan Eco, Basic, Standard sau Performance pentru a atașa un domeniu personalizat și a servi HTTPS.
Generați CSR-ul (pentru certificate încărcate manual)
Dacă ați generat deja CSR-ul și ați primit certificatul emis de la autoritatea de certificare, treceți direct la Instalarea unui certificat SSL pe Heroku.
Aveți nevoie de un CSR doar dacă achiziționați un certificat terț pentru a-l încărca manual. Dacă intenționați să folosiți ACM, puteți sări complet peste această secțiune: ACM emite certificatul pentru dumneavoastră și nu există niciun CSR de trimis.
Un CSR (Certificate Signing Request) este un bloc de text pe care îl trimiteți autorității de certificare în timpul comenzii. Acesta conține detaliile despre domeniul și organizația dumneavoastră, precum și cheia publică pentru care va fi emis certificatul. Heroku nu generează CSR-uri direct pe platformă, așa că trebuie să generați cererea din afara platformei. Aveți două opțiuni:
- Folosiți Generatorul de CSR SSL Dragon, care produce CSR-ul și cheia privată corespunzătoare pe baza unui formular scurt.
- Generați cererea local cu OpenSSL, urmând tutorialul nostru despre cum să generați un CSR pentru Heroku.
Deschideți fișierul .csr rezultat în orice editor de text și copiați întregul bloc, inclusiv marcajele ––BEGIN CERTIFICATE REQUEST–– și ––END CERTIFICATE REQUEST––, apoi lipiți-l în timpul comenzii SSL Dragon. Așteptați ca CA-ul să valideze și să emită certificatul (de la câteva minute pentru DV până la câteva zile lucrătoare pentru OV/EV) și continuați cu instalarea de mai jos.
Instalați un certificat SSL pe Heroku
Heroku vă oferă două căi către HTTPS. Alegeți-o pe cea care corespunde modului în care ați obținut certificatul:
- ACM (recomandat pentru majoritatea aplicațiilor). Heroku emite, instalează și reînnoiește automat un certificat gratuit Let’s Encrypt pentru fiecare domeniu personalizat al aplicației. Nu trebuie să încărcați fișiere, nu trebuie să urmăriți un calendar de reînnoire. Disponibil pe dynos Eco, Basic, Standard și Performance.
- Încărcare manuală. Folosiți această opțiune când aveți nevoie de un certificat terț specific (de exemplu, un produs Organization Validated sau Extended Validation, sau un certificat wildcard de la un alt CA decât Let’s Encrypt). Încărcați dumneavoastră certificatul și cheia privată prin dashboard sau prin CLI.
Pasul 1. Adăugați domeniul personalizat la aplicație
Heroku nu va provizioana niciun certificat (ACM sau manual) până când domeniul dumneavoastră personalizat nu este înregistrat cu aplicația. Dintr-un terminal cu drepturi elevate, executați:
heroku domains:add www.example.com -a your-app-name
Înlocuiți www.example.com cu domeniul dumneavoastră și your-app-name cu aplicația dumneavoastră Heroku. Repetați comanda pentru orice alte nume de host adiționale (de exemplu un domeniu rădăcină simplu sau un al doilea subdomeniu). Puteți adăuga domeniul și din dashboard, la Settings > Domains and certificates > Add domain.
Pentru fiecare domeniu adăugat vi se returnează o țintă DNS unică, de exemplu quiet-fire-1234.herokudns.com. Veți avea nevoie de această valoare când actualizați DNS-ul la Pasul 3.
Pasul 2. Provizionați certificatul
Opțiunea A: ACM (gratuit, cu reînnoire automată Let’s Encrypt)
Activați ACM pentru aplicație din CLI:
heroku certs:auto:enable -a your-app-name
Heroku începe să emită un certificat Let’s Encrypt pentru fiecare domeniu personalizat al aplicației. Pentru a urmări progresul și a confirma starea, executați:
heroku certs:auto -a your-app-name
Puteți activa ACM și din dashboard: deschideți aplicația, accesați Settings > Domains and certificates, faceți clic pe Configure SSL, alegeți Automated Certificate Management, apoi Continue. Odată ce DNS-ul este configurat (Pasul 3), ACM finalizează validarea domeniului și certificatul devine activ. Reînnoirile se produc automat cu aproximativ o lună înainte de expirare.
Opțiunea B: încărcare manuală a unui certificat terț
CA-ul livrează trei fișiere în căsuța dumneavoastră de e-mail:
- Certificatul entității finale, de obicei cu extensia .crt (format PEM).
- Pachetul CA (certificatele intermediare), de regulă cu extensia .ca-bundle.
- Cheia privată generată împreună cu CSR-ul (un fișier .key).
Heroku se așteaptă la un singur fișier PEM care conține certificatul entității finale urmat de intermediare (un fullchain). Pe Linux sau macOS, concatenați-le cu cat:
cat yourcertificate.crt bundle.ca-bundle > server.crt
Pe Windows, deschideți ambele fișiere într-un editor de text simplu (Notepad++ sau VS Code, nu Word) și lipiți conținutul fișierului .ca-bundle sub conținutul fișierului .crt, în această ordine, fără linie goală între blocuri. Salvați fișierul combinat sub numele server.crt.
Încărcați fullchain-ul și cheia privată cu Heroku CLI:
heroku certs:add server.crt server.key -a your-app-name
Dacă înlocuiți un certificat existent al aplicației (de exemplu, în cadrul unei reînnoiri), folosiți certs:update în loc, astfel încât Heroku să păstreze aceeași țintă DNS:
heroku certs:update server.crt server.key -a your-app-name
Preferați dashboard-ul? Deschideți aplicația, accesați Settings > Domains and certificates, faceți clic pe Configure SSL, alegeți Manually, apoi trageți fișierul combinat server.crt în slotul pentru certificat și fișierul .key în slotul pentru cheia privată. Faceți clic pe Next și confirmați.
Dacă vedeți o eroare Internal server error la încărcare, cel mai probabil Heroku CLI-ul dumneavoastră local este depășit. Actualizați-l cu heroku update și încercați din nou. De asemenea, Heroku necesită chei RSA; cheile ECDSA nu sunt momentan acceptate pentru încărcările manuale.
Pasul 3. Direcționați DNS-ul spre ținta DNS Heroku
Indiferent de metoda de provizionare, certificatul devine activ doar când DNS-ul domeniului personalizat se rezolvă către Heroku. Listați-vă domeniile și copiați ținta DNS returnată de Heroku:
heroku domains -a your-app-name
Veți vedea o valoare precum quiet-fire-1234.herokudns.com alături de fiecare domeniu. La furnizorul dumneavoastră de DNS, creați o înregistrare pentru fiecare domeniu:
- Subdomeniu (de exemplu www.example.com): creați o înregistrare CNAME care să indice spre ținta DNS Heroku.
- Domeniu apex / rădăcină (de exemplu example.com): CNAME nu este permis pe apex conform specificației DNS, așa că folosiți o înregistrare ALIAS, ANAME sau CNAME-flattened (numele exact depinde de furnizorul dumneavoastră de DNS) care să indice spre aceeași țintă DNS Heroku. Dacă furnizorul dumneavoastră de DNS nu suportă niciuna dintre acestea, găzduiți DNS-ul la unul care suportă (Cloudflare, DNSimple, Route 53, NS1, easyDNS etc.).
Nu direcționați DNS-ul spre your-app-name.herokuapp.com sau spre orice nume de host *.herokussl.com: ACM nu poate valida certificatul prin acestea, iar o asociere manuală nici ea nu se va direcționa corect. Folosiți întotdeauna ținta DNS specifică fiecărui domeniu, atribuită de Heroku.
Modificările DNS pot dura de la câteva minute la câteva ore pentru a se propaga. Odată ce Heroku detectează înregistrarea actualizată, ACM finalizează validarea automat (sau certificatul dumneavoastră manual începe să serveze trafic).
Pasul 4. Verificați că certificatul este activ
Confirmați instalarea din CLI:
heroku certs:info -a your-app-name
Rezultatul listează certificatul, CA-ul emitent, data de expirare și domeniile pe care le acoperă. Apoi deschideți site-ul dumneavoastră prin https:// într-un browser și verificați prezența lacătului, și rulați o scanare externă mai profundă cu SSL Checker pentru a confirma că lanțul certificatului este complet și protocoalele sunt configurate corect.
Întrebări frecvente
Nu. Add-on-ul legacy SSL Endpoint a fost întrerupt în 2021 (noile provizionări au fost stopate pe 14 mai 2021) și a atins finalul ciclului de viață mai târziu în același an. Fiecare aplicație nouă folosește Heroku SSL cu SNI, care este inclus gratuit la orice nivel de dyno plătit. SSL Endpoints existente pe aplicații care rulează de mult timp continuă să funcționeze, dar Heroku recomandă migrarea lor la Heroku SSL.
Folosiți ACM, cu excepția cazului în care aveți un motiv specific să nu o faceți. Este gratuit, reînnoiește automat fiecare certificat cu aproximativ o lună înainte de expirare și elimină calendarul de reînnoire din sarcinile echipei dumneavoastră. Optați pentru încărcarea manuală atunci când aveți nevoie de un certificat Domain Validated, Organization Validated sau Extended Validation de la un CA specific, un certificat wildcard sau un certificat multi-domeniu (SAN) care acoperă nume de host care nu se află toate pe această aplicație Heroku.
Nu. Dynos-urile gratuite au fost retrase pe 28 noiembrie 2022. Domeniile personalizate și SSL (atât ACM cât și manual) necesită un plan plătit: Eco, Basic, Standard sau Performance. Din noiembrie 2025, certificatele ACM și manuale sunt ambele suportate pe dynos Eco, care reprezintă calea cu cel mai scăzut cost către HTTPS pe un domeniu personalizat.
Două cauze frecvente. Prima, DNS-ul este încă direcționat spre *.herokuapp.com în loc de ținta DNS specifică domeniului, atribuită de Heroku (ceva de genul quiet-fire-1234.herokudns.com). Verificați din nou înregistrarea la furnizorul dumneavoastră de DNS și actualizați-o. A doua, DNS-ul a fost modificat, dar propagarea nu s-a finalizat încă; alocați câteva minute până la câteva ore, apoi rulați heroku certs:info -a your-app-name pentru a confirma.
Cu ACM, nu trebuie: Heroku reemite certificatul de la Let’s Encrypt automat, cu aproximativ o lună înainte de expirare. Cu un certificat manual, comandați reînnoirea (generând un CSR nou), construiți un fișier fullchain nou și rulați heroku certs:update server.crt server.key -a your-app-name. Folosirea comenzii certs:update în loc de certs:add păstrează ținta DNS existentă, astfel încât nu mai trebuie să modificați din nou DNS-ul. Certificatele SSL/TLS publice sunt momentan limitate la aproximativ un an, așa că planificați să repetați acest lucru anual dacă rămâneți la încărcarea manuală, sau treceți la ACM și lăsați Heroku să se ocupe de asta.
Aproape întotdeauna este vorba despre un Heroku CLI depășit. Rulați heroku update pentru a actualiza la ultima versiune, apoi reîncercați comanda. Dacă eroarea persistă, confirmați că fișierul certificatului este un fullchain în format PEM (entitatea finală prima, intermediarele după) și că cheia privată este o cheie RSA care corespunde CSR-ului trimis către CA.
Economisește 10% la certificatele SSL în momentul plasării comenzii!
Eliberare rapidă, criptare puternică, încredere în browser de 99,99%, suport dedicat și garanție de returnare a banilor în 25 de zile. Codul cuponului: SAVE10


