Manejo de Certificados en Linux
Table of Contents
Ubicación de los certificados
Suelen ubicarse en:
ls -la /etc/ssl/
Datos Prácticos
- PKCS#1 y PKCS#8 son formatos de las llaves privadas. Siendo la primera más antigua. Se suele reconocer por
-----BEGIN RSA PRIVATE KEY-----mientras que la segunda se presenta como-----BEGIN PRIVATE KEY----- - openssl x509 maneja certificados mientras que openssl rsa maneja llaves
Comandos más Comunes:
Entre los comandos más comunes están:
- La lectura en texto plano del certificado:
openssl x509 -in <domain>.crt -text -noout
- Ver el certificado presentado actualmente. Ya sea dentro del mismo servidor, o de forma remota:
openssl s_client -connect localhost:443 </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates -serial
- Extraer de un
pfxelclient certsin lakey. Dondepassines elpassphraseque colocamos al momento de descargar nuestro certificado
openssl pkcs12 -in <domain>.pfx -clcerts -nokeys -out <domain>.nokey.crt -passin pass:xxxxxxxxxxxxxxx
- Extraer de un
pfxelCA certificatesin lakey:
openssl pkcs12 -in <domain>.pfx -cacerts -nokeys -out <domain>-chain.pem -passin pass:xxxxxxxxxxxxxxx
- Combinar dos certificados de texto plano. En este caso el
client certy elCA cert:
cat <domain>.nokey.crt <domain>-chain.pem > <domain>.com.crt
- Extraer solo la
Key(le vuelve a colocar elpassphrase):
openssl pkcs12 -in <domain>.pfx -nocerts -out <domain>.key -passin pass:xxxxxxxxxxxxxxx -passout pass:xxxxxxxxxxxxxxx
- Convertir la
keyen unaUnencrypted Key:
openssl rsa -in <domain>.key -out <domain>.decrypted.key -passin pass:xxxxxxxxxxxxxxx
- Validar la que la firma del
CA certificatesea realmente la que está en elclient certificatey que lacertificate chaines correctacert -> intermediate CA -> root CA:
openssl verify -verbose -CAfile <domain>-chain.pem <domain>.nokey.crt
Donde <domain>-chain.pem es el CA certificate y <domain>.nokey.crt es el client certificate
- Es posible que un certificado esté como bundle. Donde incluye
client cert -> Intermediate CA -> Root CA. Para ello podemos usar este comando
openssl storeutl -noout -text -certs <domain>.crt | grep -E "Subject:|Issuer:|Not before|Not After"