Creando certificados CA en Linux

La siguiente es una guía paso a paso de como crear sus propios CA (Certificados de Autoridad) con OpenSSL en Linux.

Creando el Certificado
El primer paso es hacer el par llave privada CA y certificado CA

openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

Nota: Durante este proceso se le pedirá que ingrese algunos datos como Nombre, Organización, Estado o Provincia, etc.
El CA certificado/llave creado será valido por 10 años (3650 días)

Ahora se crea el certificado de llave privada/certificado para el servidor:

openssl genrsa -des3 -out server.key 4096
openssl req -new -key server.key -out server.csr  openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

Nota: Durante este proceso se le pedirá que ingrese algunos datos como Nombre (Common Name -CN-), Organización, Estado o Provincia, etc. Recuerde de cuando se ingrese los datos, que éstos no sean los mismos que para el CA (Certificados de Autoridad) sino ocurrirá una colisión de datos. El CA certificado/llave creado será valido por 10 años (3650 días).

El Common Name (CN) o Nombre debería ser el nombre DNS o la dirección IP del servidor de otra manera se obtendrá “domain mismatch“. Por ejemplo el cliente Windows SSTP no se conectará al servidor.
La creación del par llave cliente/certificado es similar al servidor. Recordar especificar valores CN únicos.

openssl genrsa -des3 -out client.key 4096
openssl req -new -key client.key -out client.csr

openssl x509 -req -days 3650 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt

Para examinar el certificado ejecutar el siguiente comando:

openssl x509 -noout -text -in server.crt -purpose

Importando el Certificado

Para importar el certificado creado recientemente en el router, primero de debe subir los archivos server.crt y server.key en el router vía FTP.

Ahora hay que ir al submenu /certificate y ejecutar el siguiente comando:

[admin@test_host] /certificate> import file-name=server.crt
passphrase:
     certificates-imported: 1
     private-keys-imported: 0
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0
[admin@test_host] /certificate> import file-name=server.key
passphrase:
     certificates-imported: 0
     private-keys-imported: 1
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0

Si todo ha sido importado correctamente entonces el certificado debería mostrar el flag KR.

[admin@test_host] /certificate> print
Flags: K - decrypted-private-key, Q - private-key, R - rsa, D - dsa
 0 KR name="cert1" subject=C=LV,ST=RI,L=Riga,O=MT,CN=server,emailAddress=xxx@mt.lv
      issuer=C=LV,ST=RI,L=Riga,O=MT,CN=MT CA,emailAddress=xxx@mt.lv serial-number="01"
      email=xxx@mt.lv invalid-before=jun/25/2008 07:24:33
      invalid-after=jun/23/2018 07:24:33 ca=yes

Nota: Si se quiere usar el certificado para OpenVPN o SSTP y además la verificación del certificado cliente, el certificado CA debería ser importado también.

Por: Maximiliano Dobladez Fuente: Mikrotik
Bajo Licencia CC 2.5 - Attribution-Noncommercial-No Derivative