OpenSSL básico OpenSSL básico Índice 1 OpenSSL .....................................................................................................................................................1 2 Ejemplos......................................................................................................................................................2 2.1 Ejemplo 1............................................................................................................................................2 2.2 Ejemplo 2............................................................................................................................................3 2.3 Ejemplos de la documentación oficial.............................................................................................3 3 Apéndice.....................................................................................................................................................3 3.1 Estándar X.509....................................................................................................................................3 3.2 Archivo *.pem....................................................................................................................................4 3.3 Base64..................................................................................................................................................4 3.4 RSA......................................................................................................................................................4 4 Fuentes........................................................................................................................................................4 1 OpenSSL OpenSSL es un kit de herramientas de criptografía que implementa los protocolos de red SSL y TLS y los estándares de criptografía que requieren. El programa openssl es una herramienta de línea de comandos para utilizar las múltiples funciones de criptografía de la librería crypto de OpenSSL. 1/4 OpenSSL básico 2 Ejemplos 2.1 Ejemplo 1 Este comando genera un fichero seguro.pem que contendrá tanto la clave privada como el certificado público basado en dicha clave. openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/seguro.pem -out /etc/ssl/private/seguro.pem /etc/ssl Directorio para certificados y claves. req -x509 -nodes Generar un certificado autofirmado req request: solicitud de certificado -x509 generar certificado autofirmado (con estructura X.509) en lugar de solicitud -nodes la clave privada se guardará sin encriptar (no recomendable, pero necesario en algunas ocasiones) -newkey rsa:1024 Crear una nueva solicitud de certificado y una nueva clave privada. La clave tendrá 1024 bits y utilizará el algoritmo de cifrado RSA. Nota: una clave privada RSA contiene toda la información necesaria para obtener la clave pública a partir de ella. -keyout /etc/ssl/private/seguro.pem Guardar la nueva clave privada en el fichero seguro.pem -out /etc/ssl/private/seguro.pem Guardar la solicitud, o el certificado autofirmado, en el fichero vs seguro.pem 2/4 OpenSSL básico Al ejecutar el comando, nos solicitará una serie de datos para generar nuestro certificado: • Country Name (2 letter code): ES • State or Province Name: Navarra • Locality Name: Tudela • Organization Name: Aula 30x • Organizational Unit Name: Seguro • Common Name: aula30x.test • Email Address: manolo@aula30x.test 2.2 Ejemplo 2 Generar una clave privada RSA de 2048 bits y, posteriormente, crear un certificado autofirmado a partir de dicha clave. openssl genrsa -out /etc/ssl/private/seguro.key 2048 openssl req -new -key /etc/ssl/private/seguro.key -x509 -days 365 -out /etc/ssl/certs/seguro.pem 2.3 Ejemplos de la documentación oficial Crear una clave privada y, después, generar una solicitud de certificado a partir de dicha clave. openssl genrsa -out key.pem 1024 openssl req -new -key key.pem -out req.pem Idem, pero usando un sólo comando openssl req -newkey rsa:1024 -keyout key.pem -out req.pem Generar un certificado autofirmado openssl req -x509 -newkey rsa:1024 -keyout key.pem -out req.pem 3 Apéndice 3.1 Estándar X.509 En criptografía, X.509 es un estándar UIT-T para infraestructuras de claves públicas (PKI). X.509 específica, entre otras cosas, formatos estándar para certificados de claves públicas y un algoritmo de validación de la ruta de certificación. Su sintaxis, se define empleando el lenguaje ASN.1 (Abstract Syntax Notation One), y los formatos de codificación más comunes son DER (Distinguish Encoding Rules) o PEM (Privacy Enhanced Mail). 3/4 OpenSSL básico El certificado contiene la clave pública, que expresada en notación ASN.1, consta de dos campos, en primer lugar, el que muestra el algoritmo utilizado para crear la clave (ej. RSA), y en segundo lugar, la propia clave pública. 3.2 Archivo *.pem Las extensiones de archivo de certificados X.509 son: .CER - Certificado codificado en CER, algunas veces es una secuencia de certificados .DER - Certificado codificado en DER .PEM - Certificado codificado en Base64 .P7B - Ver .p7c .P7C - Estructura PKCS#7 SignedData sin datos, solo certificado(s) o CRL(s) .PFX - Ver .p12 .P12 - PKCS#12, puede contener certificado(s) (público) y claves privadas (protegido con clave) 3.3 Base64 Sistema de numeración posicional que usa 64 como base. Es la mayor potencia de dos que puede ser representada usando únicamente los caracteres imprimibles de ASCII. Esto ha propiciado su uso para codificación de correos electrónicos, PGP y otras aplicaciones. La primera aplicación conocida de la codificación Base 64 para transmisiones electrónicas de datos fue el protocolo Privacy-enhanced Electronic Mail (PEM), propuesto por el RFC 989 en 1987. PEM define un esquema de caracteres imprimibles que usa Base 64 para transformar una secuencia arbitraria de octetos en un formato que puede ser expresado en líneas cortas de caracteres de 7 bits, tales como las necesarias en protocolos de transmisión como SMTP. 3.4 RSA En criptografía, RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en 1977. Es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente. 4 Fuentes Servicios de Red e Internet, Editorial Garceta http://www.openssl.org/docs/apps/openssl.html http://www.openssl.org/docs/apps/req.html http://es.wikipedia.org/wiki/X.509 http://es.wikipedia.org/wiki/Base64 http://es.wikipedia.org/wiki/RSA http://www.madboa.com/geek/openssl/ R.18.2 @aula30x 4/4