2. Índice
● Introducción
● Comandos y ejemplos
● Configuración
● Licencia de uso
2
3. Introducción
● openssl es una librería para:
– Operaciones básicas de criptografía: valores
aleatorios, hash y cifrados simétricos, asimétricos.
– Gestión de certificados X.509 y formatos asociados
– Protocolos SSL y S/MIME
● Usos:
– En comandos de la shell
– Como librería de distintos lenguajes
3
4. Valores aleatorios
● prime: comprobación de números primos
● rand: generador de números aleatorios
4
5. Funciones hash
● Funciones resumen. Firma y verificación a partir de
claves privada/pública:
– dgst, md2, md5, mdc2, rmd160, sha1, sha
● passwd: hash (crypt, md5 bsd o apache) de
password
● Ejemplos:
– Hash md5:
openssl dgst md5 mifichero.txt
5
7. Cifrado asimétrico
● Gestión de claves y parámetros RSA, DH, DSA,
Curvas elípticas:
– dhparam, gendh, dh
– genrsa, rsa
– dsaparam, gendsa, dsa. A diferencia de rsa, tiene un
paso intermedio de parámetros (números p, q, g)
– ec, ecparam
● Firma/verificación, encriptación/desencriptación
RSA
– rsautl
7
8. Cifrado asimétrico
● Ejemplos:
– Generar una clave DSA con contraseña:
openssl dsaparam out paramdsa.pem 1 4
02
openssl gendsa des3 out privkey
.pem paramdsa.pem
– Generar una clave RSA sin contraseña:
openssl genrsa out privkey
.pem 1 4
02
– Quitar la contraseña de una clave privada DSA:
openssl dsa in privkey
.pem out privkey2.pem
8
9. Gestión de certificados X.509
● req
– Acciones:
● -new: genera un CSR; si no está -key genera una
RSA
● -newkey: genera una clave
● -x509: autofirmado
● -text: muestra información
– Parámetros Input:
● -key i: key input
– Parámetros Output:
● -out o: CSR o certificado autofirmado
● -keyout o: key output
9
10. Gestión de certificados X.509
● Ejemplos:
– Generar un CSR y una clave privada:
(Importante: campo cn coincidente con el nombre
del servicio ej. mail.acme.com, intranet.acme.com)
openssl req new out cert.pem keyout privkey
.pem
– Crear un certificado autofirmado y una clave privada
con contraseña:
openssl req new x509 days 365 out cert.pem
keyout privkey
.pem
– Crear un certificado autofirmado y una clave privada
sin contraseña:
openssl req new x509 nodes days 365 out
cert.pem keyout privkey
.pem
10
11. Gestión de certificados X.509
● x509
– Acciones:
● -signkey i: crea un certificado autofirmado con la
clave i (cambiando la clave pública a la
correspondiente a i)
● -CA f: crea un certificado firmado por la CA
indicada en f
● -text: muestra información
– Parámetros Input:
● -in f: certificado o csr
● -req: indica que el fichero de entrada es un csr
– Parámetros Output:
● -out o: CSR o certificado autofirmado 11
12. Gestión de certificados X.509
● Ejemplos:
– Mostrar info de un certificado:
openssl x509 text in cert.pem
– Convertir un certificado de der a pem:
openssl x509 in cert.der infor m der out cert.pem
12
13. Gestión de certificados X.509
● ca
– Acciones:
● Firma de uno o más csr
● Creación de CRLs
– Parámetros Input:
● -in f: csr
– Parámetros Output:
● -out o: certificado firmado
13
14. Gestión de certificados X.509
● ca tiene opciones definidas en /etc/openssl.conf.
Por defecto:
– Ficheros y directorios requeridos:
● demoCA/cacacert.pem
● demoCA/index.txt vacío
● demoCA/newcerts/
● demoCA/newcerts/private/cakey.pem
● demoCA/serial con algún valor, ej. 01
– Valores que han de ser iguales en el csr y la ca:
● C (country)
● S (state)
● O (organization)
14
15. Gestión de certificados X.509
● crl: procesamiento de ficheros crl
● verify: certificar certificados contra ficheros de CAs
● Ejemplos:
– Validar un certificado:
openssl verify CApath /... cert.pem
15
16. Gestión de certificados X.509
● ocsp
– Protocolo para validar certificados en modo cliente-
servidor.
– Más pensado a modo de prueba. Algo limitado
(ineficiencia, comando post de http,...)
– Modos:
● cliente
● servidor o responder
– Formas de validación:
● Modo línea y un fichero (-issuer, -cert/-serial)
● Modo línea y varios ficheros (-reqin, -respin)
● Url (-url) o Host, puerto y path (-host)
16
17. Gestión de formatos
● asn1parse: d (depth), hl (header length), l (length),
valores
● pkcs8, pkcs7, crl2pkcs7, pkcs12
● Ejemplos:
– Convertir un certificado a pkcs12:
openssl pkcs12 export inkey priv
.pem in cert.pem
out cert.p12
17
18. SSL/TLS y S/MIME
● Protocolos SSL/TLS
– Listado de ciphers para SSL/TLS:
● ciphers
– Sesiones SSL/TLS
● s_client, s_server, sess_id, s_time
● Gestión de correo encriptado o con firma s/mime:
– smime
18
19. Otros comandos
● engine: interface a módulos C
● errstr: búsqueda de códigos de errores
● speed: medida de la velocidad de la librería
● Varios Netscape: nseq, spkac
19
20. Configuración
● /etc/ssl/openssl.cnf: fichero de configuración.
Secciones para ca, req, crl
● /etc/ssl/private/: claves privadas
● /etc/ssl/certs/: certificados. Muchos son enlaces a
los que están en /usr/share/ca-certificates/mozilla
20