Openssl

9,230 views

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,230
On SlideShare
0
From Embeds
0
Number of Embeds
57
Actions
Shares
0
Downloads
129
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Openssl

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

×