Table of Contents
[CHEATSHEET] Openssl basic commands
Descripción
Comandos básicos para manejarse con openssl
OpenSSL standard
Obtener Información
https
Ver información directamente desde internet:
openssl s_client -showcerts -connect blog.ciberterminal.net:443
crt
openssl x509 -text -in cert.crt
csr
openssl req -noout -text -in cert.csr
key
La key no tiene info, solo se puede ver si se corresponde con un certificado, para ello podemos ver la info de un crt y de la key y ver si son iguales, por ejemplo:
openssl x509 -noout -modulus -in server.crt | openssl md5 openssl rsa -noout -modulus -in server.key | openssl md5
Debería darnos la misma suma md5. A lo rápido podemos usar:
if [ `openssl x509 -noout -modulus -in server.crt | openssl md5` = `openssl rsa -noout -modulus -in server.key | openssl md5` ] ; \ then echo "La suma coincide" ; else echo "La suma NO COINCIDE!"; fi
pem
openssl x509 -text -in cert.pem
PKCS12 (p12/pfx)
openssl pkcs12 -info -in keyStore.p12
Conversion de formatos
KEY+CRT a PEM
cat server.key server.crt > server.pem
DER a PEM (cer a crt)
openssl x509 -inform DER -outform PEM -in cs.atlasit.com.cer -out cs.atlasit.com.crt
CRT a DER
openssl x509 -in input.crt -out input.der -outform DER
CRT a PEM
openssl x509 -in input.crt -out input.der -outform DER openssl x509 -in input.der -inform DER -out output.pem -outform PEM
PEM a P12/PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
Cambios
Eliminar password key
Cuando tengamos una keyfile encriptada con password (
-des3
) cada vez que reiniciemos el apache, pedirá password, con esto generamos una nueva key sin password:
openssl rsa -in file.key -out newfile.key
En caso de que lo que tengamos es un pem (crt+key), se tiene que hacer en 2 pasos:
openssl rsa -in cert.pem -out newcert.pem openssl x509 -in cert.pem >> newcert.pem
OpenSSH
Generar par de claves
ssh-keygen -t rsa -b 2048
Comprobar private-public key
ssh-keygen -l -f id_rsa
Donde idrsa
es el nombre del certificado que obtenemos de la lista.
es la priv key
=====Cambiar password=====
<code>
ssh-keygen -p -f idrsa
</code>
=====Re-generar pub-key=====
<code>
ssh-keygen -y -f ~/.ssh/idrsa
</code>
=====Copiar pub-key a otro host=====
<code>
ssh-copy-id -i ~/.ssh/id_rsa user@host
</code>
=====Ignorar el warning de Host cambiado=====
<code>
ssh -o “StrictHostKeyChecking no” -l user HOST
</code>
o
<code>
ssh -o StrictHostkeyChecking=no -l user HOSTS
</code>
También se puede añadir al
.ssh/config, por supuesto.
—-
======Java Keytool======
=====Obtener Información=====
Para ello necesitamos java, por supuesto, por lo que el path puede cambiar:
<code>
keytool -list -v -keystore keystore
</code>
Puede que pida password del keystore, puede ser “changeit”, “zimbra” u otro diferente que habrá que “adivinar”
=====Cambios=====
====Añadir certificado a una Truststore====
<code>
keytool -import -keystore KEYSTORE.jks -storepass “changeit” -file MYCERT.crt
</code>
====Eliminar certificado a una Truststore====
<code>
keytool -delete -alias mydomain -keystore keystore.jks
</code>
—-
======IBM way======
=====Obtener Información=====
====Listar certificados en un KDB====
<code>
gsk7cmd -certs -list -db KDBFILE.kdb -pw PASSWORDDELKDB
</code>
Para “ver” el password del kdb, podemos recurrir al passwordfile o stash-file que normalmente se configura en el producto que estamos tratando.
Más abajo pongo un script para “desencriptar” el password del stash-file.
====Ver detalles de un certificado en KDB====
<code>
gsk7cmd -cert -details -label “IDENTIFICADORDELCERTIFICADO” -db KDBFILE.kdb -pw PASSWORDDELKDB
</code>
Donde
IDENTIFICADORDEL_CERTIFICADO
Podemos obtener todavía más información añadiendo la flag -showOID
:
gsk7cmd -cert -details -showOID -label "IDENTIFICADOR_DEL_CERTIFICADO" -db KDBFILE.kdb -pw PASSWORD_DEL_KDB
Conversion
PEM a ARM
gawk 'BEGIN {found = 0}; \$0=="-----BEGIN CERTIFICATE-----" {found = 1}; {if (found==1) print \$0}' ${CER_FILE} > ${ARM_CER_FILE}
Otros
Desencriptar password de stash-file
vi unstash.pl
use strict; die "Usage: $0 <stash file>\n" if $#ARGV != 0; my $file=$ARGV[0]; open(F,$file) || die "Can't open $file: $!"; my $stash; read F,$stash,1024; my @unstash=map { $_^0xf5 } unpack("C*",$stash); foreach my $c (@unstash) { last if $c eq 0; printf "%c",$c; } printf "\n";
Se puede ejecutar de forma habitual:
perl unstash.pl STASH-FILE.sth