Openssl

download Openssl

If you can't read please download the document

Transcript of Openssl

  • 1. Dani Gutirrez Porset [email_address]
      • openssl

2. ndice

  • Introduccin
  • Comandos y ejemplos
  • Configuracin
  • Licencia de uso

3. Introduccin

  • openssl es una librera y un comando de shell para:
    • Operaciones bsicas de criptografa: valores aleatorios, hash y cifrados simtricos, asimtricos.
    • Gestin de certificados X.509 y formatos asociados
    • Protocolos SSL (v2, v3), TLS (v1) y S/MIME
  • Interfaces:
    • Comandos de la shell
    • Librera para distintos lenguajes

4. Valores aleatorios

  • prime: comprobacin de nmeros primos
  • rand: generador de nmeros aleatorios

5. Funciones hash

  • Funciones resumen. Firma y verificacin a partir de claves privada/pblica:
    • dgst, md2, md5, mdc2, rmd160, sha1, sha
  • passwd: hash (crypt, md5 bsd o apache) de password
  • Ejemplos:
    • Hash md5: openssl dgst -md5 mifichero.txt

6. Cifrado simtrico

  • Encriptacin/desencriptacin simtrica (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

7. Cifrado asimtrico

  • Gestin de claves y parmetros RSA, DH, DSA, Curvas elpticas:
    • dhparam, gendh, dh
    • genrsa, rsa
    • dsaparam, gendsa, dsa. A diferencia de rsa, tiene un paso intermedio de parmetros (nmeros p, q, g)
    • ec, ecparam
  • Firma/verificacin, encriptacin/desencriptacin RSA
    • rsautl

8. Cifrado asimtrico

  • Ejemplos:
    • Generar una clave DSA con contrasea: openssl dsaparam -out paramdsa.pem 1024 openssl gendsa -des3 -out privkey.pem paramdsa.pem
    • Generar una clave RSA sin contrasea: openssl genrsa -out privkey.pem 1024
    • Quitar la contrasea de una clave privada DSA: openssl dsa -in privkey.pem -out privkey2.pem

9. Gestin 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 informacin
    • Parmetros Input:
      • -key i: key input
    • Parmetros Output:
      • -out o: CSR o certificado autofirmado
      • -keyout o: key output

10. Gestin 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 contrasea: openssl req -new -x509 -days 365 -out cert.pem -keyout privkey.pem
    • Crear un certificado autofirmado y una clave privada sin contrasea: openssl req -new -x509 -nodes -days 365 -out cert.pem -keyout privkey.pem

11. Gestin de certificados X.509

  • x509
    • Acciones:
      • -signkey i: crea un certificado autofirmado con la clave i (cambiando la clave pblica a la correspondiente a i)
      • -CA f: crea un certificado firmado por la CA indicada en f
      • -text: muestra informacin
    • Parmetros Input:
      • -in f: certificado o csr
      • -req: indica que el fichero de entrada es un csr
    • Parmetros Output:
      • -out o: CSR o certificado autofirmado

12. Gestin 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 -inform der -out cert.pem

13. Gestin de certificados X.509

  • ca
    • Acciones:
      • Firma de uno o ms csr
      • Creacin de CRLs
    • Parmetros Input:
      • -in f: csr
    • Parmetros Output:
      • -out o:certificado firmado

14. Gestin de certificados X.509

  • ca tiene opciones definidas en /etc/openssl.conf. Por defecto:
    • Ficheros y directorios requeridos:
      • demoCA/cacacert.pem
      • demoCA/index.txt vaco
      • demoCA/newcerts/
      • demoCA/newcerts/private/cakey.pem
      • demoCA/serial con algn valor, ej. 01
    • Valores que han de ser iguales en el csr y la ca:
      • C (country)
      • S (state)
      • O (organization)

15. Gestin 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

16. Gestin de certificados X.509

  • ocsp
    • Protocolo para validar certificados en modo cliente-servidor.
    • Ms pensado a modo de prueba. Algo limitado (ineficiencia, comando post de http,...)
    • Modos:
      • cliente
      • servidor o responder
    • Formas de validacin:
      • Modo lnea y un fichero (-issuer, -cert/-serial)
      • Modo lnea y varios ficheros (-reqin, -respin)
      • Url (-url) o Host, puerto y path (-host)

17. Gestin 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

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
      • Ej. Validar certificado de un servidor mediante conexin al mismo: openssl s_client -CAfile CAcertificado -connect servidor:puerto
  • Gestin de correo encriptado o con firma s/mime:
    • smime

19. Otros comandos

  • engine: interface a mdulos C
  • errstr: bsqueda de cdigos de errores
  • speed: medida de la velocidad de la librera
  • Varios Netscape: nseq, spkac

20. Configuracin

  • /etc/ssl/openssl.cnf: fichero de configuracin. Secciones para ca, req, crl
  • /etc/ssl/private/: claves privadas
  • /etc/ssl/certs/: certificados. Muchos son enlaces a los que estn en /usr/share/ca-certificates/mozilla

21. Licencia de uso

    • http://creativecommons.org/licenses/by-sa/3.0/