Openssl
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,133
On Slideshare
6,091
From Embeds
42
Number of Embeds
1

Actions

Shares
Downloads
63
Comments
0
Likes
1

Embeds 42

http://www.slideshare.net 42

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. openssl Dani Gutiérrez Porset jdanitxu@gmail.com
  • 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
  • 6. Cifrado simétrico ● Encriptación/desencriptación simétrica (base64, blowfish, CAST, DES, triple DES, IDEA, RC2, RC4, RC5): – enc,... ● Ejemplos: – Convertir a base64, ej. en ficheros ldif: openssl base64 ­in fich.in ­out fich.out echo ­n “cadena” | openssl base64 – Decodificar de base64: openssl base64 ­d ­in fich.in ­out fich.out echo ­n “cadena64” | openssl base64 ­d 6
  • 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
  • 21. Licencia de uso http://creativecommons.org/licenses/by-sa/3.0/ 21