Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

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

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

Tabla de contenidos

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

POWERSHELL
hostnamectl set-hostname srvca001

Creamos el registro en /etc/hosts

CODE
127.0.0.1 mprolca001 srvca001.red-orbita.com

Ponemos en hora el servidor

BASH
sudo apt install ntpdate
sudo ntpdate pool.ntp.org

Instalamos el servicio de NTP

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

Verificamos que funcione correctamente el servicio de NTP

CODE
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

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

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

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

Geneamos un numero de serie

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

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

CODE
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

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

Creamos el certificado

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

Crear certificado firmado

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

Generamos el crs

CODE
​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

CODE
​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

CODE
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: 

BASH
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

CODE

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!