Cómo usar OpenSSL para generar SSL certificados, claves privadas y los CSR

A+ A-

OpenSSL es una CLI (Command Line Tool) que puede ser usado para fijar el servidor para generar la infraestructura de clave pública (PKI) y HTTPS. Este artículo le ayuda como una referencia rápida para entender los comandos OpenSSL que son muy útiles en común, y para los escenarios de la vida cotidiana, especialmente para los administradores de sistemas.

Las solicitudes de firma de certificado (CSR)

Si queremos obtener el certificado SSL de una autoridad de certificación (CA), debemos generar una solicitud de firma de certificado (CSR). A CSR consiste en principalmente la clave pública de un par de claves, y alguna información adicional. Estos dos componentes se combinan en el certificado cada vez que estamos firmando para la RSE.

Mientras generar una CSR, el sistema le solicitará información sobre el certificado y esta información se conoce como nombre distinguido (DN). El campo importante en el DN es el nombre común (CN) que debe ser el FQND (Calificado Completamente de nombres de dominio) del servidor o host en el que tenemos la intención de utilizar el certificado con.

El siguiente punto en un DN es proporcionar la información adicional acerca de nuestra empresa u organización. Si se compra un certificado SSL de una autoridad de certificación (CA), es muy importante y requiere que estos campos adicionales como la "Organización" deben reflejar su organización para obtener más detalles.

Aquí está un ejemplo general de la línea de información de la CSR, cuando se ejecute el comando OpenSSL para generar el CSR.

 Nombre País (código de 2 letras) [EE.UU.]: EN
Estado o Provincia Nombre (nombre completo) [Algunos-Estado]: Telengana
Nombre localidad (por ejemplo, de la ciudad) []: Hyderabad
Nombre de la organización (por ejemplo, de la compañía) [Internet Widgits Pty Ltd]: Ansole Pvt Ltd
Unidad organizativa Nombre (por ejemplo, la sección) []: Aplicación
Nombre común (por ejemplo, nombre de dominio completo del servidor o su nombre) []: domainname.com
Dirección de correo electrónico []: support@domainname.com 

También podemos proporcionar la información por respuestas no interactivas para la generación de información de la CSR, podemos hacer esto añadiendo la opción -subj a cualquier comando de OpenSSL que tratamos de generar o ejecutar.

A continuación se muestra un ejemplo para la opción -subj donde podemos proporcionar la información de la organización donde queremos usar esta RSE.

 -subj "/ C = IN / ST = Telengana / L = Hyderabad / S = Ansole Pvt Ltd / CN = domainname.com" 

producir CSR

En esta sección, vamos a cubrir sobre los comandos OpenSSL que están relacionadas con la generación de la RSE. Este RSE puede ser utilizado para solicitar un certificado SSL de una autoridad de certificación.

Generar una clave privada y una CSR

Si queremos utilizar HTTPS (HTTP sobre TLS) para asegurar los servidores web Apache o Nginx (utilizando una autoridad de certificación (CA) para emitir el certificado SSL). Además, el '.CSR' que va a generar tiene que ser enviado a una CA para solicitar el certificado SSL para la obtención de CA-firmado.

A continuación se muestra el comando para crear una clave privada de 2048 bits de 'domain.key' y la CSR 'domain.csr' desde el principio.

 $ Openssl req -newkey RSA: 2048 -nodes -keyout domain.key salida privado domain.csr
Generar una clave privada RSA de 2048 bits
.............................. +++
....................................... +++
escribir nueva clave privada para 'domain.key'
-----
Usted está a punto de ser preguntado para introducir la información que se incorporarán
en su solicitud de certificado.
Lo que está a punto de entrar es lo que se llama un nombre completo o un DN.
Hay un buen número de campos, pero puede dejar un poco de espacio en blanco
Para algunos campos habrá un valor predeterminado,
Si introduce '.', El campo se deja en blanco.
-----
Nombre País (código de 2 letras) [UA]: EN
Estado o Provincia Nombre (nombre completo) [Algunos-Estado]: Telengana
Nombre localidad (por ejemplo, de la ciudad) []: Hyderabad
Nombre de la organización (por ejemplo, de la compañía) [Internet Widgits Pty Ltd]: Ansol Pvt Ltd
Unidad organizativa Nombre (por ejemplo, la sección) []: Aplicación
Nombre común (por ejemplo, nombre de dominio completo del servidor o su nombre) []: domainname.com
Dirección de correo electrónico []: support@domainname.com 

El '-newkey RSA: 2048' es la opción de la que estamos especificando que la clave debe ser de 2048 bits utilizando el algoritmo RSA. La opción '' -nodes es que se especifica que la clave privada no debe ser cifrado con una frase de acceso. La opción '-nuevo', indica que se está generando un CSR.

Generar una CSR a partir de una clave privada existente

Aquí vamos a aprender acerca de, cómo generar una CSR para el que tenga la clave privada.

A continuación se muestra el comando para crear un nuevo archivo .csr sobre la base de la clave privada que ya tenemos.

 $ Openssl req tecla domain.key -nuevo salida privado domain.csr
Usted está a punto de ser preguntado para introducir la información que se incorpora a la petición del certificado.
Lo que está a punto de entrar es lo que se llama un nombre completo o un DN.
Hay un buen número de campos, pero puede dejar un poco de espacio en blanco
Para algunos campos habrá un valor predeterminado,
Si introduce '.', El campo se deja en blanco.
-----
Nombre País (código de 2 letras) [UA]: EN
Estado o Provincia Nombre (nombre completo) [Algunos-Estado]: Telengana
Nombre localidad (por ejemplo, de la ciudad) []: Hyderabad
Nombre de la organización (por ejemplo, de la compañía) [Internet Widgits Pty Ltd]: Ansol Pvt Ltd
Unidad organizativa Nombre (por ejemplo, la sección) []: applicatoin
Nombre común (por ejemplo, nombre de dominio completo del servidor o su nombre) []: domainname.com
Dirección de correo electrónico []: support@domainname.com 

Generación de una CSR de un certificado existente y la clave privada

Aquí podemos generar o renovar un certificado existente en el archivo que se pierda la RSE debido a alguna razón. Aquí, la RSE va a extraer la información usando el archivo .CRT la que tenemos.

A continuación se muestra el ejemplo para la generación -

 $ Openssl x509 en domain.crt-signkey domain.key -x509toreq salida privado domain.csr 

Donde -x509toreq se especifica que estamos utilizando los archivos de certificados x509 para hacer un CSR.

Generación de un certificados con chamuscado

Aquí vamos a generar el certificado para asegurar el servidor web en la que se utiliza el certificado de firma a utilizar para el desarrollo y el propósito de prueba.

 $ Openssl req -newkey RSA: 2048 -nodes -keyout domain.key-x509 -days 365 domain.crt salida privado
Generar una clave privada RSA de 2048 bits
................ +++
.................................................. +++ .....
escribir nueva clave privada para 'domain.key'
-----
Usted está a punto de ser preguntado para introducir la información que se incorpora a la petición del certificado.
Lo que está a punto de entrar es lo que se llama un nombre completo o un DN.
Hay un buen número de campos, pero puede dejar un poco de espacio en blanco
Para algunos campos habrá un valor predeterminado,
Si introduce '.', El campo se deja en blanco.
-----
Nombre País (código de 2 letras) [UA]: EN
Estado o Provincia Nombre (nombre completo) [Algunos-Estado]: Telengana
Nombre localidad (por ejemplo, de la ciudad) []: Hyderabad
Nombre de la organización (por ejemplo, de la compañía) [Internet Widgits Pty Ltd]: Ansol Pvt Ltd
Unidad organizativa Nombre (por ejemplo, la sección) []: Aplicación
Nombre común (por ejemplo, nombre de dominio completo del servidor o su nombre) []: domainname.com
Dirección de correo electrónico []: support@domainname.com 

Aquí, generamos certificado autofirmado utilizando -x509 opción, podemos generar certificados con una validez de 365 días usando -days 365 y unos archivos temporales .csr se generan utilizando la información anterior.

Para ver los archivos Certificados

Tenga en cuenta que, archivos de RSE están codificados con formato .PEM (que no es legible por los seres humanos). Esto es necesario para ver un certificado. En esta sección, podemos cubrir los comandos OpenSSL que están codificados con archivos .PEM.

Visualización de RSE Archivos entires

El que a continuación se puede utilizar para ver el contenido de la .CRT archivos Ex (domain.crt) en el formato de texto plano.

 $ Sudo openssl x509 -text -noout -en domain.crt
Certificado:
Datos:
Version: 3 (0x2)
Número de serie: 9717655772991591277 (0x86dc0c706eb0136d)
Algoritmo de Firma: sha256WithRSAEncryption
Emisor: C = IN, ST = Telengana, L = Hyderabad, O = Ansol Pvt Ltd, OU = Aplicación, CN=domainname.com/emailAddress=support@domainname.com
Validez
No antes: Jun 13 de 2016 14:23:52 GMT
No Después: Jun 13 de 2017 14:23:52 GMT
Asunto: C = IN, ST = Telengana, L = Hyderabad, O = Ansol Pvt Ltd, OU = APLICACIÓN, CN=domainname.com/emailAddress=support@domainname.com
.... 

Trabajar con claves privadas

En esta sección, va a ver cómo utilizar los comandos OpenSSL que son específicos para la creación y verificación de las claves privadas.

Crear una clave privada

A continuación se muestra el comando para crear una contraseña-protegido y, de 2048 bits cifrado privada archivo de claves (ex domain.key.) -

 $ Openssl genrsa -des3 salida privado domain.key 2048 

Introducir una contraseña cuando se le solicite para completar el proceso.

Verificar una clave privada

A continuación se muestra el comando para comprobar que una clave privada que hemos generado (por ejemplo: domain.key) es una clave válida o no:

 $ Openssl rsa -in -check domain.key 

Si se cifra la clave privada, se le pedirá que introduzca la frase de paso. A la entrada con éxito, la clave no cifrado será la salida en el terminal.

En este artículo, hemos aprendido algunos comandos y el uso de los comandos de OpenSSL que se ocupa de los certificados SSL donde el OpenSSL tiene un montón de características. Vamos a aprender más características y el uso en el futuro. Espero que este artículo nos ayudará a entender algunas de las características básicas de la OpenSSL.