bg-tutorials

Cum se generează un CSR pe lighttpd

Acest tutorial vă arată cum să generați un CSR pe lighttpd folosind linia de comandă OpenSSL pe același server care rulează serverul web lighttpd. Veți crea două fișiere într-o singură comandă: o nouă cheie privată și CSR-ul (Certificate Signing Request) corespunzător pe care îl trimiteți către Autoritatea dvs. de Certificare.

Pașii de mai jos funcționează pe orice distribuție Linux modernă care include lighttpd (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Fedora, openSUSE, Alpine), deoarece fiecare vine cu OpenSSL 1.1.1 sau OpenSSL 3.x. Ambele versiuni semnează cererea cu SHA-256 în mod implicit, așa că nu este nevoie să adăugați un flag pentru digest. Aceeași comandă funcționează și pe FreeBSD și pe macOS cu lighttpd.

Pasul 1: Conectați-vă la serverul dvs. lighttpd

Deschideți Terminal pe macOS sau Linux, sau PowerShell ori Windows Terminal pe Windows, și conectați-vă la server prin SSH. Înlocuiți numele de utilizator și gazda cu ale dvs.:

ssh your-user@your-lighttpd-server

Generați CSR-ul pe același server care va găzdui certificatul. Cheia privată este creată alături de CSR și trebuie să rămână pe acel server, așa că rularea comenzii pe laptopul dvs. și apoi copierea cheii în altă parte anulează scopul întregului proces. De asemenea, s-ar putea să doriți să faceți acest lucru într-un director dedicat pe care îl puteți găsi mai târziu, de exemplu:

sudo mkdir -p /etc/lighttpd/ssl
cd /etc/lighttpd/ssl

Pasul 2: Generați cheia privată și CSR-ul

Dacă ați generat deja CSR-ul cu un alt instrument, treceți direct la instalarea certificatului pe lighttpd.

Rulați următoarea comandă OpenSSL. Aceasta creează o cheie RSA de 2048 de biți și un CSR într-un singur pas, cu subiectul și Subject Alternative Names (SAN-uri) furnizate direct în comandă, 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 pentru certificatele publice; puteți folosi rsa:4096 pentru o cheie mai mare, sau puteți trece la ECDSA (vedeți mai jos).
  • -nodes lasă cheia privată necriptată, astfel încât lighttpd să o poată citi la pornire fără să solicite o parolă.
  • -keyout și -out denumesc fișierele cheii private și CSR-ului.
  • -subj furnizează subiectul certificatului. Introduceți aici numele real al companiei dvs., statul și orașul, nu valorile substituente. CN (Common Name) este domeniul dvs. principal.
  • -addext „subjectAltName=…” listează fiecare nume de gazdă pe care certificatul trebuie să îl acopere. CA-urile publice validează în funcție de lista SAN, așa că includeți și Common Name-ul aici.

Î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 certificat wildcard, includeți atât wildcard-ul, cât și domeniul simplu: DNS:*.yourdomain.com,DNS:yourdomain.com. Folosiți doar caractere alfanumerice în câmpurile subiectului și utilizați codul oficial de țară din două litere pentru câmpul C.

Dacă preferați o cheie ECDSA (mai mică și mai rapidă, cu P-256 susținut 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"

lighttpd acceptă atât certificate RSA, cât și ECDSA prin mod_openssl, iar dvs. puteți servi ambele pe același socket listând două perechi de directive ssl.pemfile și ssl.privkey.

Dacă preferați să răspundeți la câmpuri unul câte unul, rulați openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr fără -subj și fără -addext. OpenSSL vă va cere fiecare câmp pe rând. Când se întâmplă acest lucru:

  • Country Name (C): codul ISO din două litere al țării dvs., de exemplu US sau GB. Pentru certificatele Business Validation sau Extended Validation, acesta trebuie să fie țara oficială de înregistrare a organizației dvs.
  • State or Province Name (ST): numele complet, de exemplu Tennessee. Nu prescurtați.
  • Locality Name (L): orașul sau localitatea, de exemplu Nashville.
  • Organization Name (O): numele oficial înregistrat al companiei dvs., de exemplu Your Company LLC. Pentru certificatele Domain Validation puteți introduce NA.
  • Organizational Unit Name (OU): acest câmp este depreciat și ignorat de CA-urile publice. Lăsați-l gol apăsând Enter.
  • Common Name (CN): numele de domeniu complet calificat (Fully Qualified Domain Name) pentru care este destinat certificatul, de exemplu www.yourdomain.com. Pentru un wildcard, folosiți *.yourdomain.com.
  • Email Address: opțional și neutilizat de CA-urile publice. Puteți lăsa acest câmp gol.
  • A challenge password și An optional company name: ambele sunt atribute învechite pe care CA-urile publice le ignoră. Lăsați-le necompletate.

Fără flag-ul -addext, CSR-ul rezultat nu va avea intrări SAN. CA-urile publice validează în funcție de lista SAN și vor respinge (sau vor suprascrie automat) o cerere fără aceasta, așa că traseul recomandat este comanda de mai sus cu -subj și -addext incluse direct.

Pasul 3: Localizați fișierele dvs.

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 rezervă securizată și nu o trimiteți 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.

Restricționați cheia privată astfel încât doar proprietarul fișierului să o poată citi:

chmod 600 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ă. Aceasta decodifică cererea la nivel 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 instrumentul nostru online CSR Decoder 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 acestuia:

-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----

Copiați întregul bloc, inclusiv liniile ––BEGIN CERTIFICATE REQUEST–– și ––END CERTIFICATE REQUEST–– (fiecare marcaj are 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 la locul ei pe server.

Dacă preferați să nu folosiți linia de comandă, puteți construi cererea și cu instrumentul nostru online CSR Generator. Rețineți că acesta generează cheia privată în browserul dvs., așa că salvați acea cheie chiar dvs. și mutați-o pe server.

După ce CA-ul dvs. validează cererea, veți primi certificatul. În funcție de nivelul de validare, acest lucru durează câteva minute pentru Domain Validation, sau până la câteva zile lucrătoare pentru Business Validation și Extended Validation.

Pasul 6: Instalați certificatul pe lighttpd

Când sosește certificatul, plasați certificatul emis și lanțul său intermediar pe server, alături de cheia privată, apoi îndreptați lighttpd către acestea în blocul dvs. de socket TLS. În versiunile curente ale lighttpd, suportul TLS se află în mod_openssl, iar formatul recomandat (de când lighttpd 1.4.53 a introdus ssl.privkey) păstrează certificatul plus lanțul într-un singur fișier și cheia privată într-un fișier separat:

server.modules += ( "mod_openssl" )

$SERVER["socket"] == ":443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
    ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
}

Fișierul ssl.pemfile trebuie să conțină certificatul dvs. urmat de certificatele intermediare (construiți-l cu cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem). Formatul vechi cu un singur fișier, care concatena certificatul și cheia privată într-un singur ssl.pemfile, funcționează în continuare pe versiunile mai vechi, dar forma cu fișiere separate corespunde modului în care Autoritățile de Certificare livrează fișierele și este recomandarea documentată. Testați configurația cu sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf și reporniți lighttpd pentru a aplica modificarea. Pentru fluxul complet de lucru, consultați ghidul nostru despre cum să instalați un certificat SSL pe lighttpd.

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

A detailed image of a dragon in flight

Autor cu experiență, specializat în certificate SSL. Transformă subiectele complexe despre securitatea cibernetică în conținut clar și captivant. Contribuie la îmbunătățirea securității digite prin narațiuni cu impact.