OpenSSL
OpenSSL
Llicència: CC BY-NC-SA 4.0
(Reconeixement - NoComercial - CompartirIgual) 🅭
OpenSSL
OpenSSL és una eina de programari que implementa protocols criptogràfics
de seguretat de capa de transport (SSL) i seguretat de la capa de transport (TLS),
així com altres funcionalitats relacionades amb la criptografia:
Xifrat de dades
Generació de certificats
Signatura de fitxers
Verificació de certificats
Gestió de claus privades i públiques
Alguns conceptes bàsics relacionats amb SSL i la criptografia són:
Clau privada i pública : La criptografia asimètrica utilitza un
parell de claus:
Una clau pública: que es pot compartir amb tothom.
Una clau privada: que s'ha de mantenir en secret.
Certificats : són fitxers que demostren l’autenticitat d’una entitat
(normalment un servidor o una pàgina web). Inclouen informació sobre la clau
pública d’una entitat i estan signats per una entitat certificadora (CA ).
Hashing : Transformació d'un missatge o fitxer en
un valor únic de mida fixa (hash).
Un hash serveix per verificar la integritat de les dades,
però no pot utilitzar-se per recuperar les dades originals.
Aquest procés és la base de la signatura digital .
Instal·lació
Certificats digitals
Els certificats són fitxers que contenen la clau pública d'una entitat
i estan signats per una entitat certificadora (CA ).
Els certificats contenen la següent informació:
País (C
) : Codi de dos lletres del país.
Estat o província (ST
) : Nom de l'estat o província.
Localitat (L
) : Nom de la localitat.
Organització (O
) : Nom de l'organització.
Unitat organitzativa (OU
) : Nom de la unitat organitzativa, departament, etc.
Nom comú (CN
) : Nom de l'entitat.
Adreça de correu electrònic (emailAddress
) : Adreça de correu electrònic de l'entitat.
Generar un certificat autosignat
Un certificat autosignat és un certificat que s'ha signat
amb la seva pròpia clau privada.
openssl req -x509 -newkey rsa:4096 -keyout privkey.pem -out cert.pem -days 365
Aquesta comanda genera un certificat autosignat a cert.pem
que conté la clau pública
i la clau privada corresponent a privkey.pem
.
Info
Les dades del certificat es demanen a l'usuari a través d'un qüestionari
o be es poden passar com a arguments a la comanda.
openssl req -x509 -newkey rsa:4096 -keyout privkey.pem -out cert.pem -days 365 \
-subj "/C=XX/ST=XXXXX/L=XXXXX/O=XXXXX/CN=XXXXX/emailAddress=XXXXX@XXXXX"
Per veure la informació d'un certificat, cal utilitzar la comanda x509
.
openssl x509 -in cert.pem -text -noout
Exportar la clau pública d'un certificat
Per exportar la clau pública d'un certificat, cal utilitzar la comanda x509
amb l'opció -pubkey
.
openssl x509 -in cert.pem -pubkey -noout > pubkey.pem
Signar un document
Per signar un document, cal utilitzar la clau privada del signant.
openssl dgst -sha256 -sign privkey.pem -out document.sig document.txt
Aquesta comanda genera una signatura del document
en el fitxer document.sig
utilitzant l'algorisme SHA-256.
Advertència
El contingut de document.sig
no és llegible, ja que s'emmagatzema directament
en format binari.
Si es desitja transformar la signatura en un format llegible, podem transformar el format binari
a base64 .
openssl base64 -in document.sig -out document.sig.base64
O en una única comanda:
openssl dgst -sha256 -sign privkey.pem document.txt | openssl base64 -out document.sig.base64
Verificar una signatura
Per verificar una signatura, cal utilitzar la clau pública del signant.
openssl dgst -sha256 -verify pubkey.pem -signature document.sig document.txt
Aquesta comanda verifica la signatura del document document.sig
Nota
En cas de haver convertit la signatura a base64, caldrà convertir-la
novament a format binari abans de verificar-la.
openssl base64 -d -in document.sig.base64 -out document.sig.base64
O en una única comanda:
openssl base64 -d -in document.sig.base64 | openssl dgst -sha256 -verify pubkey.pem -signature /dev/stdin document.txt
Encriptació asimètrica amb RSA
OpenSSL permet encriptar i desencriptar fitxers amb l'algorisme RSA.
Generar claus
Abans de poder encriptar o desencriptar un fitxer, cal generar un parell de claus
privada i pública.
openssl genrsa -out private.pem 4096
Info
Les claus generades en un certificat també es poden utilitzar per encriptar i desencriptar.
Encriptar
El procés d'encriptació consisteix a xifrar un fitxer amb la clau pública
del receptor del missatge.
openssl pkeyutl -encrypt -pubin -inkey pubkey.pem -in document.txt -out document.enc
Advertència
El fitxer encriptat document.enc
no és llegible, ja que s'emmagatzema directament
en format binari.
Si es desitja transformar el fitxer encriptat en un format llegible, podem transformar el format binari
a base64 .
openssl base64 -in document.enc -out document.enc.base64
O en una única comanda:
openssl pkeyutl -encrypt -pubin -inkey pubkey.pem -in document.txt | openssl base64 -out document.enc.base64
Desencriptar
Per desencriptar el fitxer, cal utilitzar la clau privada corresponent.
openssl pkeyutl -decrypt -inkey private.pem -in document.enc -out document.txt
Nota
En cas de haver convertit el fitxer encriptat a base64, caldrà convertir-lo
novament a format binari abans de desencriptar-lo.
openssl base64 -d -in document.enc.base64 -out document.enc
O en una única comanda:
openssl base64 -d -in document.enc.base64 | openssl pkeyutl -decrypt -inkey privkey.pem -out document.txt
Autoritat de certificació (CA )
Una autoritat de certificació (CA ) és una entitat de confiança que signa certificats
per a altres entitats.
El funcionament d'una CA és el següent:
La CA genera un certificat autosignat que conté la seva clau pública.
La CA genera certificats per a altres entitats signant-los amb la seva clau privada.
Això vol dir que la CA certifica que el certificat generat correspon a l'entitat.
Les entitats poden utilitzar el certificat de la CA per encriptar dades o signar documents.
Les altres entitats poden verificar la signatura del certificat utilitzant la clau pública de la CA .
Certificat de l'autoritat de certificació
Per generar un certificat de l'autoritat de certificació (CA ), cal seguir els passos següents:
Generar un certificat autosignat per la CA .
openssl req -x509 -newkey rsa:4096 -keyout ca-privkey.pem -out ca-cert.pem -days 365
2. Exportar la clau pública de la CA .
openssl x509 -in ca-cert.pem -pubkey -noout > ca-pubkey.pem
Generar un certificat d'una entitat signat per la CA
Per generar un certificat d'una entitat signat per la CA , cal seguir els passos següents:
Generar una clau privada i una sol·licitud de signatura de certificat (CSR) per l'entitat.
openssl req -newkey rsa:4096 -keyout entity-privkey.pem -out entity-csr.pem
Signar el certificat de l'entitat amb la clau privada de la CA .
openssl x509 -req -in entity-csr.pem -CA ca-cert.pem -CAkey ca-privkey.pem -CAcreateserial -out entity-cert.pem -days 365
Verificar un certificat signat per la CA
Per verificar un certificat signat per la CA , cal utilitzar la clau pública de la CA .
openssl verify -CAfile ca-cert.pem entity-cert.pem
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent
a la pàgina web .
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.