LINUX

Cómo administrar la infraestructura de clave pública con OpenSSL

OpenSSL es un conjunto de herramientas criptográficas de código abierto con enfoque en Secure Socket Layer / Transport Layer Security o SSL / TLS, ampliamente implementado en sistemas GNU / Linux, desempeña un papel clave en nuestra experiencia diaria en Internet. Hoy te señalaré algunos comandos que te ayudarán a gestionar Infraestructura de clave pública X.509 (PKI) y también use este kit de herramientas para cifrar / descifrar archivos y otros datos con esta gran herramienta

openssl-textcert

Este documento se basa principalmente en ejemplos, puede consultar los ejemplos según sea necesario, en algunos casos verá más de una forma de realizar una operación, en otros habrá contraseñas que debe cambiar antes de usar en su entorno.

Gestión de claves OpenSSL

La mayoría de las operaciones se basan en claves y aquí hay algunos comandos para tratar con claves públicas y privadas.

RSA

RSA es uno de los sistemas de algoritmos de criptografía de clave pública más implementados y aquí hay algunas operaciones básicas.

Generación de clave privada RSA protegida Triple DES de 2048 bits de longitud protegida por la frase de contraseña tonterías123

openssl genrsa -passout pass:nonsense123 -des3 -out rsa-2048-priv-key.pem 2048

Puede escribir el correspondiente Llave pública a un archivo como desee.

openssl rsa -in rsa-2048-priv-key.pem -pubout -out rsa-2048-public-key.pem

Puede eliminar la contraseña de una clave protegida y volcar la clave en un archivo nuevo

openssl rsa -in priv-key.pem -out priv-key-no-pass.pem

El siguiente comando permite verificar su clave.

openssl rsa -check -in server-key.pem

DSA

El algoritmo de firma digital es una alternativa a RSA.

Genere parámetros DSA.

openssl dsaparam -out dsa.param 2048

Genere la clave DSA utilizando los parámetros existentes.

openssl gendsa -des3 -out ca.key dsa.param

Certificados X.509

Ahora vamos a mostrar algunos comandos para administrar certificados, solicitudes de firma y listas de revocación.

Generando certificado
Generando certificado

Generación de solicitud de firma de certificado utilizando una clave privada existente.

openssl req -new -key server-key.pem -out server-csr.csr

Creación de una nueva solicitud de firma de certificado y una nueva clave privada RSA de 2048 bits de longitud.

openssl req -out service-csr.pem -new -newkey rsa:2048 -nodes -keyout service-key.pem

Verifique la solicitud de firma del certificado.

openssl req -in server-csr.pem -noout -verify -key server-key.pem

Firma de una solicitud de certificado.

openssl x509 -req -days 3650 -signkey ca.key -in ca.csr -out ca.crt

Generando un certificado autofirmado con clave en modo batch.

openssl req -subj "/C=BR/L=Rio de Janeiro/O=My Company/CN=www.mycomp.com" -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt

Volcar fechas e información del certificado.

openssl x509 -noout -in apache.crt -text -purpose -dates -hash -ocspid
Información de texto del certificado OpenSSL
Información de texto del certificado OpenSSL

Revocar un certificado.

openssl ca -revoke mycert.pem

Generando una CRL.

openssl ca -gencrl -config openssl.cnf -crldays 7 -crlexts crl_ext -out $crl_dir/file.crl

Analizar objetos con ASN1 a salida estándar.

openssl asn1parse -in ca.crt
Certificado de análisis ASN1
Certificado de análisis ASN1

Conversión de formatos de codificación

Habrá ocasiones en las que necesitará convertir una codificación de certificado a otra, puede enfrentar esto, por ejemplo, si trabaja en un entorno mixto con Unices, Windows y Java.

Conversión de DER, PEM y NET
PEM codificado en Base64 en la parte superior, seguido de los dos bynaries; el NET obsoleto en el centro y DER debajo de él.

Convierta un certificado codificado PEM a DER.

openssl x509 -inform PEM -outform DER -in ca.crt -out ca.der

Entonces es lo opuesto, convertir un DER en PEM.

openssl x509 -inform DER -outform PEM -in ca.der -out ca.pem

Prueba con los subcomandos s_client y s_server

Puede realizar pruebas en claves / certificados y servicios con s_client y s_server.

Pruebe su certificado y clave iniciando s_server.

openssl s_server -key ca.key -cert ca.crt

Conectando al servidor de prueba usando s_client.

openssl s_client -host localhost -port 4433 -CApath /etc/ssl/certs/

Otra conexión s_client que usa y muestra certificado, clave y en modo de depuración.

openssl s_client -connect localhost:4433 -key ca.k'ey -cert ca.crt -debug -showcerts

Inicie una capa de transporte protegida para conectarse a un servidor de correo.

openssl s_client -connect test.smtp.org:25 -starttls smtp -showcerts

Cifrado de archivos y secuencias con OpenSSL

También puede utilizar OpenSSL para cifrar datos en su computadora directamente.

Cifrar archivos

Cifre archivos usando AES-256-CBC con SHA1 como Message Digest.

openssl enc -aes-256-cbc -md sha1 -e -in arquivo -out arquivo.crypt

El descifrado del archivo AES-256-CBC debe ser el siguiente.

openssl enc -aes-256-cbc -md sha1 -d -in arquivo.crypt -out arquivo

Cifrar archivo con Triple DES.

openssl enc -des3 -e -in arquivo -out arquivo

Descifre el archivo cifrado Triple DES.

openssl enc -des3 -d -in arquivo.crypt -out arquivo.decrypted

Encriptación de transmisiones

Junto con los archivos, también puede cifrar transmisiones como enchufes de red, tuberías y otras E / S * nix. En el siguiente ejemplo usamos OpenSSL para enviar de forma segura el archivo passwd a través de un enlace de red inseguro.

Servidor

Primero configuramos un servidor Netcat con el que estará esperando la conexión. Usted puede descargar Netcat aquí.

nc -l -p 99 8| xz -d | openssl enc -aes-256-cbc -d > /client/bkp/etc/passwd

Cliente

Ahora puede usar netcat como cliente para conectarse y enviar su archivo.

cat /etc/passwd | openssl enc -e -aes-256-cbc  | xz -z | nc servidor 99

Conclusión

Estos son algunos de los comandos más utilizados, puede usar estos comandos para administrar sus claves, certificados y datos confidenciales. Para obtener más información, consulte la documentación oficial, allí encontrará detalles de estos y otros comandos y todo lo demás que se ajuste a sus necesidades.

¡Gracias por leer!

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar