Comandes bàsiques d’OpenSSL
OpenSSL és una eina de la línia de comandes, una de les més populars per la gestió de tasques relacionades amb els certificats. En aquesta entrada veurem les comandes més bàsiques .
Generar una clau privada i un CSR nous
Una de les tasques més habituals és la creació d’un CSR per poder demanar un certificat a una entitat certificadora reconeguda. Si no disposem d’un fitxer key, el podem crear amb la mateixa comanda:
openssl req -out nomdeldomini.csr -new -sha256 -newkey rsa:2048 -keyout nomdeldomini.key
Es crea la clau RSA i ens demanen una contrasenya:
Generating a RSA private key .......................+++++ .........+++++ writing new private key to 'nomdeldomini.key' Enter PEM pass phrase:
Confirmem la contrasenya:
Verifying - Enter PEM pass phrase:
I se’ns demana la informació que haurà de contenir el certificat:
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:Barcelona Locality Name (eg, city) []:Barcelona Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nomdomini Organizational Unit Name (eg, section) []:Departament de Sistemes Common Name (e.g. server FQDN or YOUR name) []:nomdomini.com Email Address []:certificats@nomdomini.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:contrasenyasegura An optional company name []:Nomdomini
La primera contrasenya es fa servir per encriptar el certificat; la segona ens la pot demanar l’entitat certificadora per comprovar la nostra identitat. Si no volem encriptar el certificat hem d’afegir l’opció -nodes a la comanda
openssl req -out nomdeldomini.csr -new -sha256 -newkey rsa:2048 -nodes -keyout nomdeldomini.key
I si no volem tampoc la segona contrasenya, senzillament la deixem en blanc.
Generar un CSR quan tenim un certificat i una clau privada
Aquesta circumstància es pot donar quan el que volem és renovar un certificat:
openssl req -in nomdeldomini.crt -key nomdeldomini.key -out nomdeldomini.csr
Si la comanda funciona correctament no ens ha de donar cap missatge.
Generar un certificat autosignat
Podem generar un certificat autosignat quan no es necessita un certificat d’una entitat certificadora de confiança. La comanda per generar-lo, amb una validesa d’un any és aquesta:
openssl req -days 365 -out nomdeldomini.crt -new -sha256 -newkey rsa:2048 -nodes -keyout nomdeldomini.key
I se’ns pregunta també quina informació ha de contenir el certificat:
Generating a RSA private key ..............+++++ ........................+++++ writing new private key to 'nomdeldomini.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:Barcelona Locality Name (eg, city) []:Barcelona Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nomdomini Organizational Unit Name (eg, section) []:Departament de Sistemes Common Name (e.g. server FQDN or YOUR name) []:nomdomini.com Email Address []:certificats@nomdomini.com
Si no especifiquem un període de validesa en dies, el període per defecte és d’un mes.
Generar un certificat autosignat a partir d’un fitxer key i un CSR
Si ja tenim la clau privada i el CSR, la comanda per generar el certificat és
openssl req -in nomdeldomini.csr -key nomdeldomini.key -out nomdeldomini.crt -sha256
Verificar un fitxer CSR
Per assegurar-nos de que la informació que conté el CSR és correcta, podem fer servir la comanda
openssl req -noout -text -in nomdeldomini.csr
Crear una clau privada
Si només necessitem generar una clau privada RSA, la comanda és aquesta:
openssl genrsa -out nomdeldomini.key 2048
Treure la contrasenya de la clau
Si volem treure la contrasenya d’una clau privada (sovint és força emprenyador) podem fer-ho amb aquesta comanda:
openssl rsa -in nomdeldomini.key -out sensecontrasenya.key
Verificar la clau privada
Per verificar la clau privada escribim
openssl rsa -in nomdeldomini.key -check
Verificar el fitxer del certificat
Podem verificar el fitxer del certificat escribint
openssl req -in nomdeldomini.crt -text -noout
Verificar l’entitat certificadora
Per verificar la clau privada escribim
openssl req -in nomdeldomini.crt -issuer -issuer_hash
Verificar el Hash d’un certificat
Podem verificar el hash del certificat escribint
openssl req -in nomdeldomini.crt -noout -hash
Convertir un certificat en format DER a PEM
Per convertir un certificat del format DER al format PEM hem d’escriure
openssl req -in nomdeldomini.crt -outform PEM -out nomdeldomini.pem
Convertir un certificat DER a PFX
Podem convertir un certificat de format DER a PFX amb la següent comanda
openssl pkcs12 -export -out nomdeldomini.pfx -in nomdeldomini.crt -inkey nomdeldomini.key -certfile certificatarrel.crt
Se’ns demanarà crear una contrasenya per exportar el certificat:
Enter export password:
I verificar-la:
Verifying – Enter Export Password: