martes, 14 de julio de 2026

WEBPROPv2 (XX). Crear entidad certificadora y certificados wildcard de servidor

 1. Crear la entidad certificadora.

sudo openssl genpkey \
  -algorithm RSA \
  -pkeyopt rsa_keygen_bits:4096 \
  -aes-256-cbc \
  -out ca_2026.key

Hay que indicar una contraseña


2. Crear certificado raiz de la CA

Para ello, le damos 10 años de validez al certificado raiz

sudo openssl req \
  -x509 \
  -new \
  -sha256 \
  -key ca_2026.key \
  -days 3650 \
  -out ca_2026.crt \
  -subj "/C=ES/ST=Valencia/L=Poblacion/O=Edificio de Poblacion/OU=Informatica/CN=CA Edificio"


3. Crear el fichero de configuración wildcard

creamos el fichero de la configuración del wildcard

sudo nano wildcard.cnf

con este contenido

[req]
prompt = no
distinguished_name = dn
req_extensions = req_ext

[dn]
C = ES
ST = Valencia
L = Poblacion
O = Edificio de Poblacion
OU = Informatica
CN = *.poblacion.es

[req_ext]
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.poblacion.es
DNS.2 = poblacion.es

[server_ext]
basicConstraints = critical, CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = @alt_names


4. Generar la clave privada del wildcard

sudo openssl genpkey \
  -algorithm RSA \
  -pkeyopt rsa_keygen_bits:2048 \
  -out wildcard_2026.poblacion.es.key


5. Crear la solicitud CSR

sudo openssl req \
  -new \
  -key wildcard_2026.poblacion.es.key \
  -out wildcard_2026.poblacion.es.csr \
  -config wildcard.cnf


6. Firmar el certificado con tu CA

sudo openssl x509 \
  -req \
  -in wildcard_2026.poblacion.es.csr \
  -CA ca_2026.crt \
  -CAkey ca_2026.key \
  -CAcreateserial \
  -out wildcard_2026.poblacion.es.crt \
  -days 3650 \
  -sha256 \
  -extfile wildcard.cnf \
  -extensions server_ext

Y piede la contraseña de la CA que hemos dado antes

Los archivos generados hasta ahora son:

ca_2026.crt                       Certificado público de tu CA
ca_2026.key                       Clave privada de la CA
wildcard_2026.poblacio.es.crt     Certificado wildcard
wildcard_2026.poblacion.es.key    Clave privada del wildcard


7. Comprobar el certificado

openssl x509 \
  -in wildcard_2026.poblacion.es.crt \
  -noout \
  -subject \
  -issuer \
  -dates \
  -ext subjectAltName

openssl verify \
  -CAfile ca_2026.crt \
  wildcard_2026.poblacion.es.crt


8. Instalar la CA como confiable en Ubuntu

Copia únicamente el certificado público de la CA:

sudo cp ca_2026.crt /usr/local/share/ca-certificates/ca_2026.crt
sudo update-ca-certificates

No copies nunca ca_2026.key fuera de su ubicación protegida.

En otros ordenadores, navegadores o móviles tendrás que instalar también ca_2026.crt como autoridad de confianza. De lo contrario, mostrarán un aviso de certificado no confiable.


9. Ejemplo para openresty(nginx) (/usr/local/openresty/nginx/conf)

server {
  listen 8449 ssl;
  server_name poblacion.es *.poblacion.es;

  ssl_certificate        /usr/local/openresty/nginx/certs/wildcard_2026.poblacion.es.crt;
  ssl_certificate_key    /usr/local/openresty/nginx/certs/wildcard_2026.poblacion.es.key;
ssl_client_certificate /usr/local/openresty/nginx/certs/ca_all_2026.cer;
}

Siendo ca_all_2026.cer una recopilacion de certificados raíz en los que se confía