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!