Instalar CA interna (Certification Authority) OpenSSL en GNI/Linux

Las entidades de certificación (CA) son responsables de emitir certificados digitales para verificar identidades en Internet. Las CA públicas son una opción popular para verificar la identidad de sitios web y otros servicios que se proporcionan al público en general, y las CA privadas suelen usarse para grupos cerrados y servicios privados.

Compilar una entidad de certificación privada le permitirá configurar, probar y ejecutar programas que requieren conexiones cifradas entre un cliente y un servidor. Con una CA privada, puede emitir certificados para usuarios, servidores o programas y servicios individuales dentro de su infraestructura.

Requisitos previos

Cambiamos el nombre del servidor

hostnamectl set-hostname srvca001

Creamos el registro en /etc/hosts

127.0.0.1 mprolca001 srvca001.red-orbita.com

Ponemos en hora el servidor

sudo apt install ntpdate
sudo ntpdate pool.ntp.org

Instalamos el servicio de NTP

sudo apt install ntp
sudo systemctl start ntp
sudo systemctl status ntp

Verificamos que funcione correctamente el servicio de NTP

ntpq -p


     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
-bifopm3myzth-ge 86.77.84.80      4 u  697 1024  377    1.517   -1.133   0.308
+time.cloudflare 10.10.8.4        3 u  708 1024  377    2.658    1.080   0.296
+arethusa.tweake 193.79.237.14    2 u  795 1024  377    2.928    1.154   0.254
*46.243.26.34 (4 .GPS.            1 u  766 1024  377    8.282    1.049   1.321
-intimideer.1afa .PHC0.           1 u  725 1024  377    4.480    1.187   0.312
+185.125.190.56  179.208.94.190   2 u  107 1024  377    9.235    0.929   0.629

Configuración de la CA

Creamos la estructura de directorios

mkdir -p /ca
cd /ca
mkdir newcerts certs crl private requests

Para llevar el registro de los certificados firmados tenemos los siguientes archivos auxiliares:

touch /ca/index.txt.attr
touch /ca/index.txt

Geneamos un numero de serie

echo $(shuf -i 1000-9999 -n 1) > /ca/serial

Creamos el fichero de configuración /ca/srvca001.cnf

dir = /ca

[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical, CA:TRUE, pathlen:3
keyUsage = critical, cRLSign, keyCertSign
nsCertType = sslCA, emailCA

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
#extendedKeyUsage=serverAuth
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = ns1.redorbita.local
DNS.2 = ns2.redorbita.local

req_extensions = v3_req

Creamos la clave privada de la CA

openssl genrsa -aes256 -out /ca/private/cakey.pem 4096
chmod 400 /ca/private/cakey.pem

Creamos el certificado

openssl req -config /ca/srvca001.cnf -new -x509 -key /ca/private/cakey.pem -out cacert.pem -days 3650 -set_serial 0

Crear certificado firmado

​openssl genrsa -aes256 -out /ca/private/jira.redorbita.com.pem 2048

Generamos el crs

​openssl req -config /ca/mprolca001.cnf -new -key /ca/private/jira.redorbita.com.pem -out /ca/requests/jira.redorbita.com.csr

​Country Name (2 letter code) [AU]: ES
State or Province Name (full name) [Some-State]: Madrid
Locality Name (eg, city) []: Madrid
Organization Name (eg, company) [Internet Widgits Pty Ltd]: RedOrbita
Organizational Unit Name (eg, section) []: jira
Common Name (e.g. server FQDN or YOUR name) []: jira.redorbita.com
Email Address []:

Generamos el certificado firmado

​openssl ca -in /ca/requests/jira.redorbita.com.csr \
-out /ca/certs/jira.redorbita.com.crt \
-extensions SAN \
-config <(cat /ca/srvca001.cnf \
<(printf '[SAN]\nsubjectAltName=DNS:jira.redorbita.com,IP:192.168.1.10')) \
-days 365

Eliminar la contraseña

openssl rsa -in /ca/private/jira.redorbita.com.pem -out /ca/private/jira.redorbita.com.pem

Renovar certificado

En primer lugar tenemos que eliminar el certificado viejo, este certificado se tiene que encontrar en la carpeta /ca/newcerts/, para encontrar cual es el certificado lo podemos buscar de la siguiente forma: 

grep -rn mdevwint001 /ca/newcerts/*

/ca/newcerts/2127.pem:10:        Subject: C=ES, ST=Madrid, O=RedOrbita
, OU=jira, CN=jira.redorbita.com
/ca/newcerts/2127.pem:36:                DNS:jira.redorbita.com

Una vez indentificado el fichero, eliminamos el certificado de la CA


openssl ca -revoke /ca/newcerts/2127.pem

Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for /ca/private/cakey.pem:
Revoking Certificate 2127.
Data Base Updated

:wq!

Deja una respuesta

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