Acest tutorial vă arată cum să generați un CSR pentru o aplicație Node.js. Node.js nu are un instrument integrat de generare CSR, așa că creați cheia privată și Certificate Signing Request-ul cu OpenSSL pe mașina care va rula Node, trimiteți CSR-ul către Autoritatea dvs. de Certificare, iar apoi încărcați certificatul emis în aplicația dvs. cu fs.readFileSync() și https.createServer().
Pașii de mai jos funcționează pe orice sistem de operare care include OpenSSL, ceea ce acoperă toate distribuțiile Linux actuale, macOS și Windows (prin binarele oficiale OpenSSL sau Git Bash). OpenSSL modern semnează cererile cu SHA-256 în mod implicit, deci nu trebuie să adăugați un flag de digest.
Pasul 1: Asigurați-vă că OpenSSL este instalat
Verificați dacă OpenSSL este disponibil pe mașina care va rula aplicația dvs. Node.js:
openssl version
Ar trebui să vedeți o linie precum OpenSSL 3.0.x sau o versiune mai nouă. Dacă comanda nu este găsită, instalați-o pentru platforma dvs.:
- Debian, Ubuntu:
sudo apt update && sudo apt install openssl - RHEL, AlmaLinux, Rocky Linux, Amazon Linux:
sudo dnf install openssl(sausudo yum install opensslpe versiunile mai vechi) - macOS: OpenSSL (LibreSSL pe unele versiuni, OpenSSL 3 dacă este instalat prin Homebrew) este deja disponibil în Terminal. Pentru a instala build-ul oficial:
brew install openssl@3. - Windows: instalați binarele oficiale OpenSSL, sau folosiți Git Bash, care vine cu OpenSSL preinstalat.
Pasul 2: Generați cheia privată și CSR-ul
Generați cheia și CSR-ul pe mașina care va rula Node.js. Cheia privată este creată alături de CSR și trebuie să rămână pe acea mașină. Executarea acestor comenzi în altă parte și apoi copierea cheii nu are sens, întrucât anulează scopul de a avea o cheie privată.
Executați următoarea comandă. Aceasta creează o cheie privată RSA de 2048 de biți și un CSR corespunzător într-un singur pas, cu subiectul și Subject Alternative Names (SAN-uri) furnizate inline astfel încât OpenSSL să nu se oprească pentru a pune întrebări:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Ce face fiecare parte:
- -newkey rsa:2048 generează o nouă cheie RSA de 2048 de biți. 2048 de biți este minimul actual acceptat de CA-urile publice; puteți folosi rsa:4096 pentru o cheie mai mare, sau puteți trece la ECDSA (vezi mai jos).
- -nodes lasă cheia privată necriptată astfel încât Node.js să o poată citi la pornire fără a solicita o parolă (passphrase). Modulul https al Node acceptă o opțiune passphrase pentru o cheie criptată, dar parola trebuie totuși să provină de undeva de pe mașină (un fișier de configurare, o variabilă de mediu, sau un manager de secrete).
- -keyout și -out denumesc fișierele cheii private și CSR-ului.
- -subj furnizează subiectul certificatului. Introduceți aici numele real al companiei, statul și orașul, nu textul de rezervă. CN (Common Name) este domeniul dvs. principal.
- -addext „subjectAltName=…” listează fiecare nume de gazdă pe care trebuie să îl acopere certificatul. CA-urile publice validează în funcție de lista SAN, deci includeți aici și Common Name-ul. Flagul -addext necesită OpenSSL 1.1.1 sau o versiune mai nouă, pe care orice sistem de operare actual o include.
Înlocuiți yourdomain.com cu domeniul dvs. real peste tot. Pentru a acoperi nume de gazdă suplimentare, adăugați-le în lista SAN, separate prin virgule, de exemplu DNS:api.yourdomain.com. Pentru un wildcard, includeți atât wildcard-ul, cât și domeniul simplu: DNS:*.yourdomain.com,DNS:yourdomain.com.
Dacă preferați o cheie ECDSA (mai mică și mai rapidă, cu P-256 fiind acceptat pe scară largă), generați cheia și CSR-ul astfel:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Mod interactiv (fără -subj)
Dacă preferați ca OpenSSL să vă solicite fiecare câmp, eliminați flagul -subj:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key -out yourdomain.csr
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
OpenSSL va solicita următoarele detalii:
- Country Name (C): codul ISO din două litere al țării organizației dvs. (de exemplu, US).
- State or Province Name (S): statul sau provincia completă unde este înregistrată compania dvs. (de exemplu, California). Nu prescurtați.
- Locality Name (L): orașul în care este înregistrată afacerea dvs. (de exemplu, San Jose).
- Organization Name (O): denumirea legală a companiei dvs. (de exemplu, GPI Holding LLC). Pentru un certificat DV (Domain Validated), lăsați câmpul gol și apăsați Enter.
- Organizational Unit Name (OU): depreciat din septembrie 2022 și ignorat de CA-urile publice. Lăsați-l gol.
- Common Name (CN): numele de domeniu complet calificat (FQDN) pe care îl securizați, de exemplu yourdomain.com. Pentru un wildcard, folosiți *.yourdomain.com.
- Email Address: opțional. Lăsați-l gol.
- A challenge password: depreciat. Lăsați-l gol.
Pasul 3: Localizați și protejați-vă fișierele
Listați directorul curent pentru a confirma că ambele fișiere au fost create:
ls
Ar trebui să vedeți două fișiere noi:
- yourdomain.key: cheia dvs. privată. Păstrați-o pe server, faceți o copie de siguranță în mod securizat și nu o trimiteți niciodată nimănui, inclusiv Autorității de Certificare. Oricine deține cheia poate să se dea drept site-ul dvs.
- yourdomain.csr: Certificate Signing Request-ul dvs. Acesta este fișierul pe care îl trimiteți furnizorului de SSL.
Pe Linux sau macOS, setați imediat permisiuni stricte pe cheia privată, astfel încât doar utilizatorul care rulează Node.js să o poată citi:
chmod 600 yourdomain.key
Dacă Node.js rulează sub un cont de serviciu dedicat (de exemplu, node sau www-data), setați și proprietarul astfel încât procesul să poată citi cheia:
sudo chown node:node yourdomain.key
Pasul 4: Verificați CSR-ul (opțional, dar recomandat)
Înainte de a-l trimite, verificați dacă CSR-ul conține subiectul și SAN-urile corecte și dacă semnătura sa este validă. Acest lucru decodifică cererea local cu OpenSSL:
openssl req -noout -text -verify -in yourdomain.csr
Confirmați că linia Subject afișează detaliile dvs., că X509v3 Subject Alternative Name listează fiecare nume de gazdă pe care îl așteptați și că verificarea semnăturii afișează verify OK. Algoritmul de semnătură ar trebui să fie sha256WithRSAEncryption (sau ecdsa-with-SHA256 pentru o cheie ECDSA). Dacă preferați să nu folosiți linia de comandă, lipiți CSR-ul în decodorul nostru CSR online pentru a citi aceleași câmpuri într-un browser.
Pasul 5: Trimiteți CSR-ul dvs.
Pentru a copia CSR-ul pentru comanda dvs., afișați conținutul acestuia:
cat yourdomain.csr
Veți vedea un bloc de text asemănător cu acesta:
-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----
Copiați întregul bloc, inclusiv liniile ––BEGIN CERTIFICATE REQUEST–– și ––END CERTIFICATE REQUEST–– (fiecare marcaj are câte cinci cratime pe fiecare parte). Acel bloc întreg este CSR-ul dvs. Lipiți-l în formularul de comandă în timpul achiziției și păstrați cheia privată corespunzătoare pe server.
Dacă preferați să nu folosiți linia de comandă, puteți construi cererea și cu generatorul nostru CSR online. Rețineți că acesta generează cheia privată în browserul dvs., așa că trebuie să salvați singur acea cheie și să o mutați pe serverul Node.js.
Ce se întâmplă după ce CA emite certificatul
Odată ce CA validează CSR-ul și emite certificatul, veți primi de obicei certificatul dvs. de server (un fișier .crt numit după domeniul dvs.), plus unul sau mai multe certificate intermediare, uneori grupate într-un fișier .ca-bundle. Node.js le încarcă în JavaScript: concatenați certificatul de server și certificatele intermediare într-un singur fișier fullchain.crt, apoi citiți-l cu fs.readFileSync() și transmiteți-l către https.createServer():
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/path/to/yourdomain.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
Acest tipar fullchain este cel folosit de majoritatea configurațiilor de producție. Prezentarea completă (inclusiv un exemplu cu module ES, o abordare alternativă cu un array ca:, și un exemplu Express) este acoperită în tutorialul nostru de instalare SSL pentru Node.js.
O notă despre implementările de producție. În 2026, majoritatea aplicațiilor Node.js care gestionează trafic public rulează în spatele unui reverse proxy sau al unui load balancer în cloud (NGINX, HAProxy, Caddy, AWS ALB, Cloudflare, Fastly) care termină TLS la margine și redirecționează HTTP simplu sau HTTP/2 către Node pe un port local ridicat. În acest tipar, certificatul (și CSR-ul pe care l-ați generat mai sus) se află pe proxy sau pe load balancer, nu pe procesul Node în sine. A permite ca Node.js să termine TLS direct este perfect în regulă pentru dezvoltare, servicii interne și implementări mici; pentru o aplicație de producție publică, terminarea TLS la margine este forma mai obișnuită.
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


