openssl în Linux / Bash

Permisiuni și securitate OpenSSL 3.0 (formatul de ieșire de pe această pagină)

Trusa în linie de comandă pentru hash-uri, chei, certificate TLS și verificarea certificatelor unui site.

Sintaxă comandă
openssl SUBCOMANDĂ [opțiuni]

Ce face openssl

openssl are zeci de subcomenzi. Cele mai folosite: dgst calculează hash-uri (SHA-256, SHA-512), rand generează octeți aleatori (pentru parole sau secrete), req creează cereri de certificat și certificate autosemnate, x509 citește un certificat, iar s_client se conectează la un server TLS ca să vezi ce certificat prezintă.

Pentru verificarea fișierelor descărcate, sha256sum e mai comod; openssl devine util când lucrezi cu certificate: vezi când expiră, cine l-a emis și pentru ce nume este valabil.

Opțiuni și argumente

Opțiune / Parametru Descriere
dgst -sha256 FIȘIER Calculează hash-ul SHA-256 al unui fișier (sau al intrării standard).
rand -hex N / -base64 N Generează N octeți aleatori, afișați în hexazecimal sau Base64.
req -x509 -newkey ... -nodes Creează o cheie nouă și un certificat autosemnat, fără parolă pe cheie.
x509 -in CERT -noout -subject -issuer -dates Afișează titularul, emitentul și perioada de valabilitate a certificatului.
x509 -checkend SECUNDE Verifică dacă certificatul expiră în următoarele SECUNDE (cod de ieșire 1 dacă da).
s_client -connect GAZDA:443 -servername GAZDA Deschide o conexiune TLS și afișează certificatul primit de la server.

Exemple

Exemplul 1: Hash SHA-256 pentru un text și un fișier

Același conținut dă mereu același hash; orice modificare, chiar de un caracter, îl schimbă complet.

printf 'Factura 2026: 450 lei\n' > factura.txt
openssl dgst -sha256 factura.txt
printf 'Ana are mere' | openssl dgst -sha256

Rezultat

SHA2-256(factura.txt)= fd14f5ad93389189bc1321b1b857a25fd4dfdeea18a3cd0f31eda9553fd211c8
SHA2-256(stdin)= 04c43a6d8236091578fcbebadfab4940a1f2387d3b21468f2eb6e0e01824089e

Exemplul 2: Certificat autosemnat pentru un server de test

Generăm o cheie EC și un certificat valabil 30 de zile pentru dexblog.test, apoi îl citim. Mesajele de progres ale lui req sunt trimise în /dev/null.

openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes \
  -keyout cheie.pem -out cert.pem -days 30 \
  -subj "/C=RO/L=Iasi/O=Dexblog/CN=dexblog.test" 2>/dev/null
openssl x509 -in cert.pem -noout -subject -issuer
openssl x509 -in cert.pem -noout -checkend 86400

Rezultat

subject=C=RO, L=Iasi, O=Dexblog, CN=dexblog.test
issuer=C=RO, L=Iasi, O=Dexblog, CN=dexblog.test
Certificate will not expire

Exemplul 3: Când expiră certificatul unui site

s_client descarcă certificatul, iar x509 afișează emitentul și datele de valabilitate. < /dev/null închide conexiunea imediat.

openssl s_client -connect www.example.com:443 -servername www.example.com < /dev/null 2>/dev/null \
  | openssl x509 -noout -issuer -dates

Ieșire în terminal

issuer=C=US, O=DigiCert Inc, CN=DigiCert Global G3 TLS ECC SHA384 2020 CA1
notBefore=Jan 15 00:00:00 2026 GMT
notAfter=Jan 15 23:59:59 2027 GMT

Greșeli frecvente

  • Folosirea echo în loc de printf pentru hash-ul unui text: echo adaugă un rând nou, deci hash-ul nu mai corespunde cu cel calculat în alt program.
  • Omiterea lui -servername la s_client: pe serverele cu mai multe site-uri primești certificatul altui domeniu.
  • Folosirea MD5 sau SHA-1 pentru securitate (semnături, parole); ele sunt bune doar pentru detectarea coruperii accidentale.

Comenzi înrudite

  • sha256sum / md5sum: Calculează și verifică sume de control (SHA-256, MD5) ca să știi dacă un fișier este identic cu originalul.
  • ssh-keygen: Generează perechi de chei SSH (privată și publică), le schimbă parola și le afișează amprenta.
  • curl: Transferă date către sau de la un server folosind protocoale web (HTTP, HTTPS, FTP, REST API).