Cómo crear una autoridad de certificación (CA) en Ubuntu 20.04 | Ubuntu 20.10

Cómo crear una autoridad de certificación (CA) en Ubuntu 20.04 | Ubuntu 20.10

 

La Autoridad de Certificación (CA) es una entidad responsable de emitir certificados digitales para hacer que la comunicación sea segura. Actúa como un tercero de confianza para el propietario del certificado y la parte que confía en el certificado.

La entidad de la autoridad de certificación puede ser pública o privada. Las CA públicas se usan comúnmente para verificar la identidad de los sitios web y las CA privadas se usan para generar certificados para una VPN de cliente a sitio, usuarios, servidores internos o programas y servicios individuales dentro de su infraestructura, como servidores web locales.

En este tutorial, aprendemos cómo crear una autoridad de certificación privada (CA) en Ubuntu 20.04 . Aquí estamos usando la utilidad CLI easy-rsa para construir y administrar el servidor CA.

requisitos previos

  • Un nodo con Ubuntu 20.04 para alojar CA Server
  • Un usuario con privilegio sudo

Paso 1: Actualice su sistema

Primero, actualice su sistema Ubuntu, ejecute el siguiente comando:

apt update

Puede omitir este paso si está instalando easy-rsa desde el repositorio oficial.

Paso 2: Instale Easy-RSA en el servidor de CA

Easy-RSA es una herramienta de línea de comandos que facilita significativamente el establecimiento de una autoridad certificadora (CA) y la gestión de certificados. Genera una clave privada y un certificado raíz público.

Easy-RSA está disponible en el repositorio apt predeterminado. Para tener la última versión instalada desde el repositorio oficial de easy-rsa GitHub .

Descargue la herramienta de administración Easy-RSA PKI de Github:

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

Aquí han descargado la versión 3.0.8 . Ahora vamos a mover el archivo a la /optcarpeta .

sudo mv EasyRSA-3.0.8.tgz /opt

Ahora cambia el directorio a /opt:

cd /opt

Ejecute el siguiente comando para descomprimir el archivo .tgz:

sudo tar xvf EasyRSA-3.0.8.tgz

Cambie el nombre del directorio usando el comando mv :

sudo mv EasyRSA-3.0.8 easy-rsa

Ahora haga que el usuario no root sea el propietario del directorio:

sudo chown -R franck:franck easy-rsa/ 

Restringir el acceso al directorio PKI, solo para el propietario:

sudo chmod 700 easy-rsa

Paso 3: configurar el servidor CA

Aquí configuraremos el directorio de infraestructura de clave pública y crearemos un certificado público/privado para el servidor CA.

Ahora cambie el directorio a easy-rsa que se creó anteriormente:

cd easy-rsa

Crearemos un varsarchivo que se utilizará para almacenar la información de la organización.

$ cp vars.example vars

Ahora agregue la información de la organización al final del archivo.

$ vim vars
set_var EASYRSA_REQ_COUNTRY    "CM"
set_var EASYRSA_REQ_PROVINCE   "Centre"
set_var EASYRSA_REQ_CITY       "Yaounde"
set_var EASYRSA_REQ_ORG        "LINUXSHARE"
set_var EASYRSA_REQ_EMAIL      "admin@linuxshare.com"
set_var EASYRSA_REQ_OU         "Com"
set_var EASYRSA_ALGO           "ec"
set_var EASYRSA_DIGEST         "sha512"

Ahora inicializaremos el directorio de infraestructura de clave pública:

$ ./easyrsa init-pki
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
 init-pki complete; you may now create a CA or requests.
 Your newly created PKI dir is: /opt/easy-rsa/pki

Para generar el par de claves raíz pública y privada para el servidor CA, escriba:

$ ./easyrsa build-ca
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
 Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
 Enter New CA Key Passphrase: 
 Re-Enter New CA Key Passphrase: 
 read EC key
 writing EC key
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
 CA creation complete and you may now import and sign cert requests.
 Your new CA certificate file for publishing is at:
 /opt/easy-rsa/pki/ca.crt

Se le pedirá que ingrese una frase de contraseña para el par de claves cada vez que necesite firmar o revocar un certificado. También se le pedirá el nombre común (CN) para su CA, puede usar el predeterminado si lo desea.

La operación creará dos archivos principales:

  • El   archivo de certificado públicoca.crt que usarán los servidores y los clientes para verificar que están en el mismo perímetro de confianza.
  • El archivo de clave privada ca.key en el pki/privatedirectorio que utiliza la CA para firmar los certificados de los servidores y los clientes.

Paso 4: Importar certificado público de CA

Ahora que tenemos el certificado público generado, necesitamos importarlo a otro servidor.

Inicie sesión en el servidor en el que le gustaría importar el certificado, luego realice una copia remota del ca.crtarchivo desde el servidor de CA.

scp franck@X.Y.Z.T:/opt/easy-rsa/pki/ca.crt
The authenticity of host 'X.Y.Z.T (X.Y.Z.T)' can't be established.
 ECDSA key fingerprint is SHA256:ffUgP5/d0Z3miOKqxBVoF9JbFvIZFs/gxr7ESBZ0kmQ.
 Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added '139.177.204.145' (ECDSA) to the list of known hosts.
 franck@X.Y.Z.T's password: 
 ca.crt     100% 749 2.4KB/s 00:00

Mueva el archivo del certificado al /usr/local/share/ca-certificates/directorio:

sudo mv ca.crt /usr/local/share/ca-certificates/

Ahora importe el certificado del servidor CA usando el siguiente comando:

sudo update-ca-certificates
Updating certificates in /etc/ssl/certs…
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d…
done.

Con eso, su servidor ahora confiará en los certificados que han sido firmados por su servidor CA.

Paso 5: Cree la solicitud de certificado del servidor y la clave privada

Podemos crear algunas solicitudes de firma de certificado (CSR) en un servidor diferente para que nuestra CA firme esas solicitudes.

Usaremos OpenSSL para crear un archivo CSR. Si OpenSSL no está instalado, use el siguiente comando para instalarlo:

sudo apt install openssl

Cree un directorio llamado server1-csr para mantener la CSR y la clave privada

mkdir server1-csr

Cambiar al directorio server1-csr

cd server1-csr

Ahora genere la clave privada usando OpenSSL:

openssl genrsa -out server1.key
Generating RSA private key, 2048 bit long modulus (2 primes)
..........+++++
..................................................+++++
e is 65537 (0x010001)

Puede generar el CSR correspondiente utilizando la clave generada:

$ openssl req -new -key server1.key -out server1.req
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CM
State or Province Name (full name) [Some-State]:CE
Locality Name (eg, city) []:Yaounde
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LinuxShare
Organizational Unit Name (eg, section) []:Tech-B
Common Name (e.g. server FQDN or YOUR name) []:server1
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: 
An optional company name []:

Ahora necesita copiar el archivo CSR al servidor de CA:

$ scp server1.req scp franck@X.Y.Z.T:/tmp/server1.req

Paso 6: Firme la CSR del servidor en el servidor de CA

El CSR generado debe estar firmado por el servidor de CA. Para eso, primero muévase al directorio easy-rsa para importar la solicitud de firma de certificado del servidor.

./easyrsa import-req /opt/sign-cert/server1.req server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
The request has been successfully imported with a short name of: server1
You may now use this name to perform signing operations on this request.

Ahora firme el CSR usando el siguiente comando:

./easyrsa sign-req server server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
 Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
 You are about to sign the following certificate.
 Please check over the details shown below for accuracy. Note that this request
 has not been cryptographically verified. Please be sure it came from a trusted
 source or that you have verified the request checksum with the sender.
 Request subject, to be signed as a server certificate for 825 days:
 subject=
     countryName               = CM
     stateOrProvinceName       = CE
     localityName              = Yaounde
     organizationName          = LinuxShare
     organizationalUnitName    = Tech-B
     commonName                = server1
 Type the word 'yes' to continue, or any other input to abort.
   Confirm request details: yes
 Using configuration from /opt/easy-rsa/pki/easy-rsa-161486.BI2HwH/tmp.lIqZoF
 Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:
 Check that the request matches the signature
 Signature ok
 The Subject's Distinguished Name is as follows
 countryName           :PRINTABLE:'CM'
 stateOrProvinceName   :ASN.1 12:'CE'
 localityName          :ASN.1 12:'Yaounde'
 organizationName      :ASN.1 12:'LinuxShare'
 organizationalUnitName:ASN.1 12:'Tech-B'
 commonName            :ASN.1 12:'server1'
 Certificate is to be certified until Jan  5 16:57:26 2024 GMT (825 days)
 Write out database with 1 new entries
 Data Base Updated
 Certificate created at: /opt/easy-rsa/pki/issued/server1.crt

En el resultado, puede ver el certificado emitido en el directorio /opt/easy-rsa/pki/issued/. También puede verificar el certificado enumerándolo:

$ ls -l /opt/easy-rsa/pki/issued

Producción:

total 4
 -rw------- 1 franck franck 3996 Oct  2 16:57 server1.crt

Con todos esos pasos, puede administrar sus certificados usted mismo para sus servidores internos. Con su servidor CA, puede firmar los certificados para sus servidores web o para un túnel VPN, por ejemplo, con OpenVPN.

Nota: Por motivos de seguridad, se recomienda no ejecutar ningún otro servicio en un servidor CA. Solo debe usarse para importar, firmar y revocar solicitudes de certificado como un servidor independiente.

Conclusión

En este tutorial, aprendimos cómo crear una autoridad de certificación privada (CA) en Ubuntu 20.04. Gracias por leer, por favor proporcione sus comentarios y sugerencias en la sección de comentarios.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.