Verificarea unui CSR sau certificat cu openssl
Comenzile openssl pentru a citi un CSR, a verifica potrivirea cu cheia privată și a inspecta un certificat instalat.
Pe această pagină
Cu utilitarul openssl verificați un CSR înainte să-l trimiteți la autoritatea de certificare (CA) și certificatul după ce îl primiți: ce domenii conțin, dacă se potrivesc cu cheia privată și până când este valabil certificatul. Pagina „Decoder CSR” de pe blackbox.md (blackbox.md/domains/csr-decode, meniul „Domenii” → „CSR Decodor”) nu decodează fișiere: afișează mesajul „Decoderul nostru online este momentan în construcție.” și recomandă tot openssl. Verificările automate descrise pe pagină le faceți dvs., cu comenzile de mai jos.
Disponibil pentru: oricine. Comenzile rulează pe calculatorul dvs. sau pe server; nu aveți nevoie de cont blackbox.md.
Unde rulați openssl
| Unde | Ce folosiți |
|---|---|
| Linux și macOS | aplicația Terminal; openssl este de obicei deja instalat |
| Windows | Git Bash (se instalează împreună cu Git for Windows) sau WSL (Windows Subsystem for Linux, cu Ubuntu); în PowerShell și în cmd, openssl nu există implicit |
| Serverul BLACKBOX | linia de comandă a serverului, după conectarea prin SSH: Conectarea la server prin SSH (Windows, macOS, Linux) |
Dacă pe server lipsește comanda openssl, instalați-o. Ubuntu și Debian:
apt update
apt install opensslAlmaLinux și CentOS Stream:
dnf install opensslExemplele folosesc fișierele domeniu.csr (cererea), domeniu.key (cheia privată) și certificat.crt (certificatul primit de la CA). Înlocuiți-le cu numele fișierelor dvs. sau cu calea completă. Generatorul de pe blackbox.md numește fișierele după câmpul „Common Name (CN)”, de exemplu www.example.com.csr și www.example.com.key: Generatorul CSR din browser.
Securitate CSR-ul și certificatul sunt publice și le puteți trimite oricui. Cheia privată (
.key) nu o trimiteți nimănui, nici autorității de certificare, nici suportului, și nu o încărcați în site-uri de verificare. Comenzile cu cheia le rulați doar pe calculatorul dvs. sau pe server.
Citiți conținutul unui CSR
openssl req -in domeniu.csr -noout -textRezultatul arată astfel (fragment):
Certificate Request:
Data:
Version: 1 (0x0)
Subject: C=MD, ST=Chisinau, L=Chisinau, O=Numele Companiei SRL, CN=www.example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
…
Attributes:
Requested Extensions:
X509v3 Subject Alternative Name:
DNS:example.com, DNS:www.example.com
Signature Algorithm: sha256WithRSAEncryption| Rândul | Ce arată |
|---|---|
Subject: |
datele cererii: CN (domeniul), O (organizația), OU (departamentul), L (localitatea), ST (regiunea), C (țara) |
Public-Key: |
lungimea cheii: (2048 bit) sau (4096 bit) la RSA; (256 bit) și NIST CURVE: P-256 la ECDSA |
X509v3 Subject Alternative Name: |
lista SAN: toate numele DNS: pe care le va acoperi certificatul |
Signature Algorithm: |
algoritmul semnăturii: sha256WithRSAEncryption (RSA) sau ecdsa-with-SHA256 (ECDSA) |
Doar lista SAN:
openssl req -in domeniu.csr -noout -text | grep -A1 "Subject Alternative Name"Dacă această comandă nu afișează nimic, CSR-ul nu are SAN.
Verificați semnătura CSR-ului
openssl req -in domeniu.csr -noout -verifyLa un CSR intact, comanda afișează Certificate request self-signature verify OK sau, în versiunile mai vechi de OpenSSL (1.1.1), verify OK. Dacă apare o eroare, fișierul este deteriorat sau a fost modificat după generare: generați un CSR nou.
Lista de verificare înainte de a trimite CSR-ul
| Ce verificați | Corect | Greșit |
|---|---|---|
| Cheia | RSA de cel puțin 2048 de biți (Public-Key: (2048 bit) sau (4096 bit)) ori ECDSA P-256 (NIST CURVE: P-256) |
RSA sub 2048 de biți: autoritățile de certificare refuză cererea |
| Common Name | CN= este exact domeniul certificatului, de exemplu www.example.com; la wildcard, *.example.com |
greșeli de tastare, de exemplu www.exampel.com în loc de www.example.com |
| SAN | lista conține toate numele, inclusiv varianta cu și fără www: DNS:example.com, DNS:www.example.com |
lipsește una dintre variante sau lipsește tot rândul SAN |
| Semnătura | sha256WithRSAEncryption sau ecdsa-with-SHA256 (SHA-256) |
sha1WithRSAEncryption (SHA-1, învechit) |
| Organizația și țara | O= este denumirea exactă a companiei, fără greșeli; C= este codul țării din 2 litere, de exemplu MD |
denumire prescurtată sau cu greșeli: contează la certificatele OV și EV, la care CA verifică organizația |
Important Generatorul de pe blackbox.md nu adaugă automat Common Name în lista SAN. Dacă ați lăsat gol câmpul „Subject Alternative Names (opțional)”, CSR-ul nu are SAN. Browserele verifică numele din SAN, așa că scrieți acolo ambele variante, de exemplu
example.comșiwww.example.com. O greșeală în CN sau în SAN înseamnă un certificat emis pentru alt domeniu, care trebuie reemis.
Verificați că cheia se potrivește cu CSR-ul și cu certificatul
Certificatul funcționează doar cu cheia privată cu care a fost generat CSR-ul. Dacă nu se potrivesc, serverul web refuză configurația (nginx raportează key values mismatch).
Chei RSA: comparați modulul
openssl rsa -noout -modulus -in domeniu.key | openssl md5
openssl req -noout -modulus -in domeniu.csr | openssl md5
openssl x509 -noout -modulus -in certificat.crt | openssl md5Fiecare comandă afișează un rezumat, de exemplu MD5(stdin)= 3b81747c6e7e0f94f6a1dff92ecc6045 (în versiunile mai vechi, (stdin)= …). Valoarea trebuie să fie identică pe toate trei rândurile. Înainte să primiți certificatul, comparați doar primele două.
Dacă prima comandă afișează Not an RSA key, cheia este ECDSA: folosiți metoda următoare.
Orice tip de cheie: comparați cheia publică
openssl pkey -in domeniu.key -pubout | openssl sha256
openssl req -in domeniu.csr -noout -pubkey | openssl sha256
openssl x509 -in certificat.crt -noout -pubkey | openssl sha256Regula este aceeași: rezumatele trebuie să coincidă. Metoda funcționează și pentru RSA, și pentru ECDSA.
Dacă valorile diferă, căutați cheia generată odată cu CSR-ul. Dacă ați pierdut-o, generați o cheie și un CSR nou și cereți autorității de certificare reemiterea certificatului.
Inspectați un certificat
Fișierul primit de la CA
openssl x509 -in certificat.crt -noout -textVerificați aceleași rânduri ca la CSR (Subject:, Public-Key:, Subject Alternative Name), plus Issuer: (autoritatea care a emis certificatul) și Validity (Not Before și Not After). La certificat, rândul Signature Algorithm: arată semnătura autorității de certificare: SHA-256 sau SHA-384 (de exemplu, ecdsa-with-SHA384) sunt corecte; doar SHA-1 este învechit.
Pe scurt, titularul, emitentul și perioada de valabilitate:
openssl x509 -in certificat.crt -noout -subject -issuer -datessubject=CN=www.example.com
issuer=C=…, O=…, CN=…
notBefore=Oct 9 10:01:55 2026 GMT
notAfter=Jan 7 10:01:55 2027 GMTOrele sunt în GMT (UTC); notAfter este data expirării. Ca să aflați dacă certificatul expiră în următoarele 30 de zile (2 592 000 de secunde):
openssl x509 -in certificat.crt -noout -checkend 2592000Răspunsul este Certificate will not expire (nu expiră în acest interval) sau Certificate will expire (reînnoiți-l).
Certificatul instalat pe server
Calea către certificat este în configurația serverului web: directiva ssl_certificate la nginx, SSLCertificateFile la Apache. O găsiți cu:
grep -rE "ssl_certificate |SSLCertificateFile" /etc/nginx /etc/apache2 /etc/httpd 2>/dev/nullCertificatele Let's Encrypt obținute cu certbot sunt în /etc/letsencrypt/live/DOMENIU/ (de obicei, primul domeniu din certificat): fullchain.pem conține certificatul și lanțul, cert.pem doar certificatul site-ului. Comanda openssl x509 citește primul certificat din fișier, adică certificatul site-ului:
openssl x509 -in /etc/letsencrypt/live/DOMENIU/fullchain.pem -noout -subject -datesSite-ul public: ce vede vizitatorul
openssl s_client -connect DOMENIU:443 -servername DOMENIU </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -datesÎnlocuiți DOMENIU în ambele locuri cu numele site-ului, de exemplu www.example.com. Opțiunea -servername transmite numele site-ului (SNI). Este obligatorie când la -connect scrieți o adresă IP: fără ea, un server cu mai multe site-uri pe aceeași adresă vă poate răspunde cu certificatul altui site.
Dacă domeniul trece prin proxy-ul Cloudflare, comanda de mai sus arată certificatul Cloudflare. Ca să vedeți certificatul de pe server, conectați-vă direct la adresa IP a serverului:
openssl s_client -connect IP_SERVER:443 -servername DOMENIU </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -datesVerificați și lanțul de certificate:
openssl s_client -connect DOMENIU:443 -servername DOMENIU </dev/null 2>/dev/null | grep -m1 "Verify return code"| Rezultat | Ce înseamnă | Ce faceți |
|---|---|---|
0 (ok) |
certificatul este valabil, iar lanțul este complet | nimic |
10 (certificate has expired) |
certificatul a expirat | reînnoiți-l și reîncărcați serverul web |
18 (self-signed certificate) (în versiunile mai vechi, self signed certificate) |
certificatul este autosemnat, nu emis de o CA | instalați certificatul primit de la CA |
21 (unable to verify the first certificate) |
serverul nu trimite certificatul intermediar | instalați certificatul împreună cu lanțul primit de la CA (la Let's Encrypt, fullchain.pem) |
Configurarea HTTPS pe server: Server web cu HTTPS: nginx sau Apache și Let's Encrypt.
Mesaje de eroare frecvente
| Mesaj | Cauza | Ce faceți |
|---|---|---|
No such file or directory |
numele sau calea fișierului sunt greșite | rulați comanda în folderul cu fișierul sau dați calea completă |
unable to load X509 request |
fișierul nu este un CSR, este incomplet sau îi lipsesc rândurile -----BEGIN CERTIFICATE REQUEST----- și -----END CERTIFICATE REQUEST----- |
deschideți fișierul într-un editor de text și verificați că blocul este întreg; copiați-l din nou |
Could not find certificate, Could not read certificate sau unable to load certificate |
fișierul nu este un certificat sau este în format binar (DER) | verificați că ați indicat certificatul, nu CSR-ul sau cheia; pentru un fișier binar (.cer, .der), adăugați -inform der după openssl x509 |
Could not find private key, Could not read private key sau unable to load Private Key |
fișierul nu este o cheie privată | indicați fișierul care începe cu -----BEGIN PRIVATE KEY----- (sau -----BEGIN RSA PRIVATE KEY-----, -----BEGIN EC PRIVATE KEY-----) |
Not an RSA key |
cheia este ECDSA | comparați cheia publică, nu modulul |
Întrebări frecvente
Pot verifica un CSR generat de altcineva? Da. CSR-ul conține doar cheia publică și datele cererii, iar cheia privată rămâne la cel care l-a generat. Comenzile din secțiunea „Citiți conținutul unui CSR” funcționează pentru orice CSR.
Am pierdut cheia privată. O pot recupera? Nu. Generatorul de pe blackbox.md nu păstrează cheia: „Cheia nu poate fi recuperată după ce părăsiți pagina.” Generați o cheie și un CSR nou și cereți autorității de certificare reemiterea certificatului.
Pentru Let's Encrypt am nevoie de un CSR?
Nu, certbot îl generează automat. Certificatul obținut îl verificați cu comenzile din „Inspectați un certificat”; pe server, comanda certbot certificates arată domeniile și data expirării fiecărui certificat. Diferențele dintre tipurile de certificate: Certificate SSL: gratuite (Let's Encrypt) și comerciale.
Mă poate ajuta BLACKBOX cu verificarea? Scrieți suportului și trimiteți CSR-ul sau certificatul, niciodată cheia privată: Cum contactați suportul BLACKBOX.