Volver |

Infraestructura de clave pública

Generar un certificado digital

Para que una Autoridad Certificante (AC) genere un certificado, antes se debe presentar una solicitud de certificado (archivo con extensión .csr)

PASO 1

Para generar el archivo csr, se debe generar una clave privada. Hacer esto con OpenSSL es muy simple:

openssl genrsa -out pk_german.key 2048  

PASO 2

Ahora generamos el archivo csr con OpenSSL:

openssl req -new -key pk_german.key -subj "/C=AR/O=LabSis/CN=Wiki/serialNumber=xxxxxxxx" -out pedido_german.csr

PASO 3

Enviar el archivo csr a la AC para la generación de certificado.

 

X.509

Es el formato estándar para especificar certifcados de claves públicas.

En el paso 2 definimos el subj (asunto del certificado X.509) y se expresó en notación DN (Distinguished Name). Esta notación se compone de campos y cada uno de ellos define un concepto, por ejemplo, C es el Country, O es la Organization, CN es el Common Name.

 

Enlaces de referencia:

https://www.openssl.org/docs/man1.0.2/man1/openssl-genrsa.html

Herramienta OpenSSL

La herramienta OpenSSL es una herramienta que permite generar claves públicas y privadas como así también certificados e incluso se puede llegar a implementar una PKI.

Página oficial: https://www.openssl.org/

Certificados X.509

Con un certificado digital X.509 uno podría autenticarse si ese fue emitido por una Autoridad Certificante.

Existen diferentes formatos de archivo para codificado a un certificado digital X.509:

  • .DER: El certificado está en formato binario (también usado .cer).
  • .PEM: El certificado está codificado en Base64 y encerrado entre "-----BEGIN CERTIFICATE-----" y "-----END CERTIFICATE-----" (también usado .crt).

Generar claves privadas y públicas

A continuación todos los ejemplos se realizarán con la herramienta OpenSSL.

Claves privadas

Se pueden generar claves privadas cifradas y no cifradas: 

Para generar una clave privada no cifrada:

openssl genrsa -out no_cifrada.key 2048

Para generar una clave privada cifrada:

openssl genrsa -des3 -out cifrada.key 2048

En realidad lo que hemos estado generando son un par de claves (pública y privada). Existe una forma de "extraer" la clave pública del archivo generado anteriormente.

Claves públicas

Para "extraer" una clave pública:

openssl rsa -in no_cifrada.key -out public.pem -outform PEM -pubout

Para cifrar un contenido con la clave pública:

echo "Mi secreto" > archivo.txt
openssl rsautl -encrypt -inkey public.pem -pubin -in archivo.txt -out cifrado.cif

Luego para descifrar el contenido con la clave privada:

openssl rsautl -decrypt -inkey no_cifrada.key -in cifrado.cif -out original.txt

 

Enlaces de referencias:

https://www.devco.net/archives/2006/02/13/public_-_private_key_encryption_using_openssl.php

En este artículo participaron: