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
Creamos este fichero de propiedades ca_2026.cnf
[req]
prompt = no
distinguished_name = dn
x509_extensions = v3_ca
[dn]
C = ES
ST = Valencia
L = Poblacion
O = Edificio de Poblacion
OU = Informatica
CN = CA Edificio
[v3_ca]
basicConstraints = critical, CA:TRUE
keyUsage = critical, keyCertSign, cRLSign
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
Para ello, le damos 10 años de validez al certificado raiz
openssl req \
-x509 \
-new \
-sha256 \
-key ca_2026.key \
-days 3650 \
-config ca_2026.cnf \
-out ca_2026.crt
3. Crear el fichero de configuración wildcard
creamos el fichero de la configuración del wildcard
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