Cómo crear un certificado usando OpenSSL
Como kit de desarrollo de seguridad basado en criptografía, OpenSSL proporciona funciones bastante potentes y completas, incluidos los principales algoritmos criptográficos, funciones de gestión de encapsulación de certificados y claves de uso común y protocolos SSL, y proporciona una gran cantidad de aplicaciones para pruebas. u otros fines.
1. Algoritmo de cifrado simétrico
OpenSSL proporciona 8 algoritmos de cifrado simétrico, 7 de los cuales son algoritmos de cifrado de bloques y el único algoritmo de cifrado de flujo es RC4. Estos siete algoritmos de cifrado de bloques son AES, DES, Blowfish, CAST, IDEA, RC2 y RC5. Todos admiten el modo de libro de códigos electrónico (ECB), el modo de encadenamiento de bloques cifrados (CBC), el modo de retroalimentación de cifrado (CFB) y el modo de retroalimentación de salida. (OFB) Cuatro modos de cifrado de cifrado de bloques comúnmente utilizados. Entre ellos, la longitud del paquete del modo de retroalimentación de cifrado (CFB) y del modo de retroalimentación de salida (OFB) utilizados por AES es de 128 bits, mientras que otros algoritmos utilizan 64 bits. De hecho, el algoritmo DES no solo es el algoritmo DES más utilizado, sino que también admite algoritmos 3DES de tres y dos claves.
2. Algoritmo de cifrado asimétrico
OpenSSL ha implementado 4 algoritmos de cifrado asimétrico, incluido el algoritmo DH, el algoritmo RSA, el algoritmo DSA y el algoritmo de curva elíptica (EC). Intercambio de claves de usuario general del algoritmo DH. El algoritmo RSA se puede utilizar tanto para el intercambio de claves como para firmas digitales y, por supuesto, si se puede tolerar su baja velocidad, también se puede utilizar para el cifrado de datos. El algoritmo DSA generalmente sólo se utiliza para firmas digitales.
3. Algoritmo de resumen de información
OpenSSL implementa 5 algoritmos de resumen de información, a saber, MD2, MD5, MDC2, SHA (SHA1) y RIPEMD. El algoritmo SHA en realidad incluye dos algoritmos de resumen de información, SHA y SHA1. Además, OpenSSL también implementa los dos algoritmos de resumen de información DSS y DSS1 especificados en el estándar DSS.
4. Gestión de claves y certificados
La gestión de claves y certificados es una parte importante de OpenSSL que proporciona funciones ricas y admite múltiples estándares.
En primer lugar, OpenSSL implementa estándares relacionados con claves y certificados ASN.1, y proporciona codificación y decodificación DER, PEM y BASE64 de certificados, claves públicas, claves privadas, solicitudes de certificados, CRL y otros objetos de datos. Función. OpenSSL proporciona métodos, funciones y aplicaciones para generar varios pares de claves públicas y claves simétricas, y también proporciona funciones de codificación y decodificación DER para claves públicas y privadas. E implementa las funciones de codificación y decodificación de la clave privada PKCS#12 y PKCS#8. OpenSSL proporciona protección de cifrado para claves privadas en el estándar, de modo que las claves se puedan almacenar y distribuir de forma segura.
Sobre esta base, OpenSSL implementa la codificación y decodificación de certificados estándar X.509, la codificación y decodificación del formato PKCS#12 y la codificación y decodificación de PKCS#7. También proporciona una base de datos de texto que admite funciones de gestión de certificados, incluida la generación de claves de certificado, generación de solicitudes, emisión, revocación y verificación de certificados.
De hecho, la aplicación CA proporcionada por OpenSSL es un pequeño centro de gestión de certificados (CA), que implementa todo el proceso de emisión de certificados y la mayoría de los mecanismos de gestión de certificados.
5. Protocolos SSL y TLS
OpenSSL implementa SSLv2 y SSLv3 del protocolo SSL y admite la mayoría de los protocolos de algoritmos. OpenSSL también implementa TLSv1.0. TLS es una versión estandarizada de SSLv3. Aunque la diferencia no es grande, hay muchos detalles que son diferentes.
Aunque hay muchos software que han implementado las funciones de OpenSSL, el protocolo SSL implementado en OpenSSL puede darnos una comprensión más clara del protocolo SSL, porque hay al menos dos puntos: Primero, el protocolo SSL implementado por OpenSSL El protocolo SSL es de código abierto y podemos investigar cada detalle de la implementación del protocolo SSL. En segundo lugar, el protocolo SSL implementado por OpenSSL es un protocolo SSL puro y no se combina con otros protocolos (como HTTP), lo que aclara; la naturaleza del protocolo SSL.
6. Aplicación
La aplicación OpenSSL se ha convertido en una parte importante de OpenSSL, y es posible que los desarrolladores de OpenSSL no hayan pensado en su importancia al principio. Muchas de las aplicaciones OpenSSL actuales se basan en aplicaciones OpenSSL en lugar de en su API. Por ejemplo, OpenCA se implementa completamente mediante aplicaciones OpenSSL. Las aplicaciones OpenSSL están escritas en base a la biblioteca de algoritmos criptográficos y la biblioteca de protocolos SSL de OpenSSL, por lo que también hay algunos muy buenos ejemplos de uso de la API de OpenSSL. Después de leer todos estos ejemplos, tendrá una comprensión más completa del uso de la API de OpenSSL. también un trabajo que ejercita tu fuerza de voluntad.
Las aplicaciones OpenSSL proporcionan funciones relativamente completas. A los ojos de muchas personas, OpenSSL lo ha hecho todo por sí mismo y no necesita hacer más trabajo de desarrollo. Por lo tanto, también convierten estas aplicaciones en directivas OpenSSL. Las aplicaciones OpenSSL incluyen principalmente generación de claves, gestión de certificados, conversión de formato, cifrado y firma de datos, pruebas SSL y otras funciones de configuración auxiliares.
7. Mecanismo del motor El mecanismo del motor apareció en la versión 0.9.6 de OpenSSL. Al principio, la versión normal se separó de la versión que admite Engine. Por la versión 0.9.7 de OpenSSL, el mecanismo está integrado. en el núcleo de OpenSSL y se convierte en una parte indispensable de OpenSSL. El propósito del mecanismo del motor es permitir que OpenSSL utilice de forma transparente bibliotecas de cifrado de software o dispositivos de cifrado de hardware proporcionados por terceros para el cifrado. El mecanismo del motor de OpenSSL logra con éxito este objetivo, lo que hace que OpenSSL no sea solo una biblioteca de cifrado, sino que proporciona una interfaz de cifrado universal que puede coordinarse con la mayoría de las bibliotecas o dispositivos de cifrado. Por supuesto, para que una biblioteca de cifrado o un dispositivo de cifrado específicos funcionen con OpenSSL, es necesario escribir una pequeña cantidad de código de interfaz, pero la carga de trabajo no es grande, aunque todavía requiere un poco de conocimiento de criptografía. La función del mecanismo del motor es básicamente la misma que la función CSP proporcionada por Windows. Actualmente, la versión 0.9.7 de OpenSSL admite ocho tipos de dispositivos de cifrado integrados de terceros, incluidos: dispositivos de cifrado de hardware CryptoSwift, nCipher, Atalla, Nuron, UBSEC, Aep, SureWare e IBM 4758 CCA. Ahora hay una interfaz de motor que admite la interfaz PKCS#11 y alguien también está desarrollando una interfaz que admite Microsoft CryptoAPI. Por supuesto, es posible que el soporte para todas las interfaces del motor anteriores no sea completo. Por ejemplo, es posible que se admitan uno o dos algoritmos de clave pública.
8. Funciones auxiliares
El mecanismo BIO es una interfaz IO de alto nivel proporcionada por OpenSSL. Esta interfaz encapsula casi todos los tipos de interfaces IO, como acceso a memoria, acceso a archivos, Enchufe, etc. Esto mejora enormemente la reutilización del código y reduce la complejidad de la API proporcionada por OpenSSL.
OpenSSL también proporciona un conjunto completo de soluciones y funciones API de soporte para la generación y gestión de números aleatorios. La calidad de los números aleatorios es un requisito previo importante para determinar si una clave es segura.
OpenSSL también proporciona otras funciones auxiliares, como APIs para generar claves a partir de contraseñas, mecanismos de archivos de configuración para la emisión y gestión de certificados, etc. Si es lo suficientemente paciente, poco a poco descubrirá muchas de estas pequeñas funciones durante el uso profundo de OpenSSL, lo que le brindará nuevas sorpresas constantes.