În acest tutorial, vei învăța cum să instalezi un certificat SSL pe Node.js folosind modulul integrat https. Spre deosebire de un server web precum Apache sau Nginx, Node.js încarcă certificatul, cheia privată și lanțul CA direct în JavaScript, astfel încât „instalarea” se realizează în interiorul codului aplicației tale.
Generarea unui cod CSR în Node.js
Dacă nu ai solicitat încă un certificat SSL, trebuie mai întâi să generezi un CSR (Certificate Signing Request). CSR-ul este un mic bloc de text codificat care conține datele tale de contact și cheia publică, iar tu îl trimiți Autorității de Certificare atunci când plasezi comanda. Ai două opțiuni:
- Generează CSR-ul automat folosind Generatorul nostru de CSR.
- Urmează tutorialul nostru pas cu pas despre cum să creezi CSR-ul în Node.js.
Trimite CSR-ul către Autoritatea de Certificare în timpul comenzii. După ce CA îl validează și emite certificatul tău SSL, continuă cu instalarea de mai jos.
Instalarea unui certificat SSL pe Node.js
Pasul 1: Pregătește fișierele certificatului
După validare, Autoritatea de Certificare îți trimite prin e-mail fișierele certificatului. Dezarhivează arhiva. Ar trebui să ai:
- yourdomain.crt, certificatul principal al domeniului tău.
- yourdomain.ca-bundle, certificatele intermediare (și rădăcină) care alcătuiesc pachetul CA.
- yourdomain.key, cheia privată generată împreună cu CSR-ul.
Browserele trebuie să primească lanțul intermediar, nu doar certificatul domeniului tău, altfel unii clienți vor respinge conexiunea. Cea mai simplă modalitate de a servi lanțul în Node.js este să combini certificatul și pachetul CA într-un singur fișier full-chain:
cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt
Plasează fișierele fullchain.crt și yourdomain.key într-un loc de unde aplicația ta le poate citi și păstrează cheia privată accesibilă doar pentru citire de către utilizatorul care rulează Node.js.
Pasul 2: Creează un server HTTPS în Node.js
Creează un fișier server. Pentru această demonstrație îl numim https_server.js, dar poți folosi orice nume de fișier. Exemplul de mai jos folosește CommonJS (require), care funcționează în orice versiune Node.js suportată. Înlocuiește căile scrise cu bold cu propriile tale căi:
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
// Recommended TLS hardening (2026): never negotiate below TLS 1.2
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
Trebuie să înlocuiești părțile scrise cu bold cu propriile tale informații:
- /path/to/private.key: calea completă către fișierul cheii tale private.
- /path/to/fullchain.crt: calea completă către fișierul full-chain creat la Pasul 1.
Notă despre port: HTTPS folosește implicit portul 443. Conectarea la acesta necesită privilegii ridicate, așa că în spatele unui proxy invers sau în dezvoltare este posibil să preferi un port mai mare, precum 8443. Este suficient să schimbi valoarea transmisă către listen().
Preferi module ES? Dacă proiectul tău folosește "type": "module" în package.json (sau un fișier .mjs), folosește sintaxa import în loc. Opțiunile TLS sunt identice:
import https from 'node:https';
import fs from 'node:fs';
const options = {
key: fs.readFileSync('/path/to/private.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);
Alternativă: transmiterea lanțului prin opțiunea ca:. Dacă preferi să păstrezi fișierele separate în loc să construiești un fișier full-chain, lasă cert să indice către certificatul domeniului tău și furnizează intermediarele printr-un array ca:
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/yourdomain.crt'),
ca: [
fs.readFileSync('/path/to/intermediate.crt'),
fs.readFileSync('/path/to/ca_bundle.crt')
],
minVersion: 'TLSv1.2'
};
Folosești Express? Transmite app-ul tău Express ca gestionar de cereri. Opțiunile certificatului rămân exact aceleași:
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
app.get('/', (req, res) => res.send('Hello over HTTPS'));
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, app).listen(443);
Pasul 3: Pornește serverul HTTPS Node.js
Rulează următoarea comandă pentru a lansa aplicația:
node https_server.js
Aplicația ta servește acum trafic prin HTTPS. Pentru o implementare în producție, rulează-o sub un manager de procese (de exemplu PM2 sau un serviciu systemd) astfel încât să repornească automat și să supraviețuiască repornirilor.
Pasul 4: Testează instalarea SSL
Testează instalarea SSL pentru posibile erori sau vulnerabilități folosind unul dintre instrumentele noastre de verificare SSL. Poți confirma lanțul și din linia de comandă:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Această comandă afișează emitentul certificatului și datele de valabilitate, confirmând că serverul tău Node.js prezintă certificatul corect.
De unde poți cumpăra un certificat SSL pentru Node.js?
SSL Dragon este sursa ta pentru toate nevoile tale legate de SSL. Oferim unele dintre cele mai mici prețuri de pe piață pentru întreaga noastră gamă de produse SSL și am colaborat cu cele mai bune branduri SSL din industrie pentru securitate puternică și suport dedicat. Toate certificatele noastre SSL sunt complet compatibile cu aplicațiile Node.js.
Emitere rapidă, criptare puternică, încredere de 99,99% din partea browserelor, suport dedicat și garanție de returnare a banilor în 25 de zile.
Întrebări frecvente
Folosește modulul integrat https. Citește cheia ta privată și certificatul full-chain cu fs.readFileSync(), transmite-le ca opțiuni key și cert către https.createServer() și apelează .listen(443). Node.js gestionează pentru tine handshake-ul TLS; nu există un server web separat de configurat.
Este necesar ca lanțul intermediar să fie servit, dar nu ai neapărat nevoie de opțiunea ca pentru a face acest lucru. Cea mai simplă abordare este să concatenezi certificatul domeniului și pachetul CA într-un singur fișier full-chain și să indici cert către acesta. Folosește array-ul ca doar dacă preferi să păstrezi certificatul și intermediarele în fișiere separate.
Pe Linux și macOS, porturile sub 1024 sunt privilegiate. Conectarea directă la portul 443 necesită permisiuni ridicate, motiv pentru care multe configurații rulează Node.js pe un port mai mare, precum 8443, în spatele unui proxy invers (Nginx sau un balanțator de sarcină) care termină sau transmite mai departe TLS. Pentru dezvoltare, este suficient să schimbi valoarea transmisă către listen().
Da. CommonJS (require) funcționează în orice versiune Node.js suportată, dar dacă proiectul tău este configurat ca modul ES („type”: „module” în package.json sau un fișier .mjs), poți folosi în schimb import https from ‘node:https’. Opțiunile TLS sunt identice în ambele cazuri.
Deschide site-ul tău într-un browser și verifică lacătul, rulează-l prin instrumentele noastre de verificare SSL sau interoghează-l din terminal cu echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com pentru a inspecta certificatul prezentat de server.
Concluzie
Instalarea unui certificat SSL pe Node.js se rezumă la construirea unui certificat full-chain, citirea acestuia și a cheii tale private cu fs.readFileSync(), transmiterea lor către https.createServer() cu minVersion: ‘TLSv1.2’ și pornirea aplicației cu node https_server.js.
Ai nevoie mai întâi de un certificat? Răsfoiește certificatele noastre SSL.
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


