User Tools

Site Tools


linux:openssl:comandos_basicos_openssl

[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 <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


Links externos

linux/openssl/comandos_basicos_openssl.txt · Last modified: 2023/09/13 14:56 by dodger