====== [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 ''id_rsa'' es la priv key =====Cambiar password===== ssh-keygen -p -f id_rsa =====Re-generar pub-key===== ssh-keygen -y -f ~/.ssh/id_rsa =====Copiar pub-key a otro host===== ssh-copy-id -i ~/.ssh/id_rsa user@host =====Ignorar el warning de Host cambiado===== ssh -o "StrictHostKeyChecking no" -l user HOST o ssh -o StrictHostkeyChecking=no -l user HOSTS 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: keytool -list -v -keystore keystore Puede que pida password del keystore, puede ser "changeit", "zimbra" u otro diferente que habrá que "adivinar" =====Cambios===== ====Añadir certificado a una Truststore==== keytool -import -keystore KEYSTORE.jks -storepass "changeit" -file MYCERT.crt ====Eliminar certificado a una Truststore==== keytool -delete -alias mydomain -keystore keystore.jks ---- ======IBM way====== =====Obtener Información===== ====Listar certificados en un KDB==== gsk7cmd -certs -list -db KDBFILE.kdb -pw PASSWORD_DEL_KDB 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==== gsk7cmd -cert -details -label "IDENTIFICADOR_DEL_CERTIFICADO" -db KDBFILE.kdb -pw PASSWORD_DEL_KDB Donde ''IDENTIFICADOR_DEL_CERTIFICADO'' es el nombre del certificado que obtenemos de la lista. 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 \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'' ---- ======Links externos====== * [[http://www.sslshopper.com/article-most-common-java-keytool-keystore-commands.html|Los comandos más usados para java keytool]] * [[http://www.madboa.com/geek/openssl/|Mega-Howto con muchos comandos por el estilo]] * [[http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/topic/com.ibm.etools.mft.doc/bp10610_.htm|ibm howto para gsk7]]