Mostrando entradas con la etiqueta certificado. Mostrar todas las entradas
Mostrando entradas con la etiqueta certificado. Mostrar todas las entradas

miércoles, 6 de mayo de 2026

Ubuntu 24. Problemas con la tarjeta nueva de la ACCV G&D SmartCafe Expert 7 (JavaCard)

 1. Problemas surgidos

Para identificar la tarjeta se ejecuta pcsc_scan y nos dice que la tarjeta es del tipo G&D SmartCafe Expert 7 (JavaCard)

Y no había manera de poder configurar dicha tarjeta

  1. Ya había drivers anteriores libaetpkss.so pero eran de 32 bits y por tanto incompatibles. Cuando se ejecutaba: pkcs11-tool --module /usr/lib/libaetpkss.so --list-slots respondía:
    sc_dlopen failed: /usr/lib/libaetpkss.so: wrong ELF class: ELFCLASS32
    error: Failed to load pkcs11 module
    Aborting.
  2. La localizacion de dichos drivers anteriores era en /usr/lib
  3. Los drivers "bit4id" que aparecen el la ACCV parece ser que son para el lector y no para la tarjeta por tanto al ejecutar pkcs11-tool --module /usr/lib/bit4id/libbit4npki.so --list-slots respondía que podía reconocer al lector pero no la tarjeta: 
    Available slots:
    Slot 0 (0x0): Identiv uTrust 2700 R Smart Card Reader [CCID Interface] (536915
      (token not recognized)
    

2. La posible solución


Le indiqué a Claude AI  que el tipo de tarjeta era G&D SmartCafe Expert 7 (JavaCard) según pscs_scan y me indicó que descargara los drivers de 64 bits de KPN (que es el distribuidor oficial de AET), los descomprimiera y los copiara a /usr/lib machacando los drivers antiguos de 32 bits.

#Paso 1 — Descargar el .deb para Ubuntu 22.04 de KPN (distribuidor oficial de AET)
cd /tmp
wget "https://certificaat.kpn.com/files/drivers/SafeSign/SafeSign IC Standard Linux 4.0.0.0-AET.000 ub2204 x86_64.deb" -O safesign4_ub2204.deb

#Paso 2 — Extraer solo la librería .deb sin instalar
dpkg-deb -x safesign4_ub2204.deb /tmp/safesign_extracted

# Ver dónde está la librería
find /tmp/safesign_extracted -name "libaetpkss*"

#Paso 3 — Copiar la librería al sistema
sudo cp /tmp/safesign_extracted/usr/lib/libaetpkss.so* /usr/lib/
sudo ldconfig

#Paso 4 — Verificar
pkcs11-tool --module /usr/lib/libaetpkss.so --list-slots
pkcs11-tool --module /usr/lib/libaetpkss.so --list-objects --type cert --login

Y si que funcinó ahora, me muestra correctamente

pkcs11-tool --module /tmp/safesign_extracted/usr/lib/libaetpkss.so   --list-objects --type cert --login
Using slot 0 with a present token (0xcd01)
Logging in to "ACCV".
Please enter User PIN: 
Certificate Object; type = X.509 cert
  label:      EPN1
  subject:    DN: CN=MI_NOMBRE MI_APELLIDO1 MI_APELLIDO2 - DNI 00000001X/serialNumber=00000001X, GN=MI_NOMBRE, SN=MI_APELLIDO1 MI_APELLIDO2, OU=CERTIFICADO ELECTRONICO DE EMPLEADO PUBLICO, O=AYUNTAMIENTO DEL BROSQUIL, C=ES
  ID:         112233abcd44efgji6asdfsa121sdfsdfsdf

3. Instalar en chrome

Hay que tener en cuenta que al instalr libnss3-tools puede haber problema con cruce de depebndencias de 32 y 64 bits y si falla hay que preguntar a una IA como solucionarlo. Los paso que me indica Claude son:

# Instalar nss-tools si no lo tienes
sudo apt install libnss3-tools

# Localizar el perfil de Chrome
ls ~/.config/google-chrome/Default/
# o Chromium:
ls ~/.config/chromium/Default/

# Registrar el módulo
modutil -dbdir sql:$HOME/.config/google-chrome/Default \
  -add "SafeSign ACCV" \
  -libfile /usr/local/lib/libaetpkss.so -force

# Verificar
modutil -dbdir sql:$HOME/.config/google-chrome/Default -list

Después hay que reiniciar Chrome (y Brave si es el caso)

4. Instalar en Autofirma 1.9

Hay que entrar en Herramientas -> Preferencias -> (Tab) Almacenes de Claves -> Combo de Selección de tarjeta -> Agregar tarjeta
Y darle estos parametros:

Ahora se le da al botón conectar 


Y nos pide el pin





Análogamente se haría para el DNIe donde se tendría que indicar la librería correcta


Ahora falta probarlo a ver si funciona, pues de momento no he podido firmar con autofirma con el certificado de tarjeta de la ACCV

Claude indica que con esta órden no debería dar problemas:

autofirma -Djava.security.debug=sunpkcs11 2>&1 | head -30





5. Instalar en Firefox


Hay que localizar el perfil en Firefox y registrar la libreria en él.Tal como vimos en el post anterior 

Firefox puede tener vaios perfiles, por tanto debemos averiguar primero el perfil antes de listar los certificados:

El perfil puede estar en :

  • ~/.mozilla/firefox/profiles.ini o también en:
  • ~/snap/firefox/common/.mozilla/firefox/profiles.ini
Hacemos el cat al fichero correspondiente 

cat ~/.mozilla/firefox/profiles.ini (o a ~/snap/firefox/common/.mozilla/firefox/profiles.ini)

Y devuelve (el marcado en azul es el correcto)

[Profile2] Name=Default User IsRelative=1 Path=e1p51k0o.Default User Default=1 [Profile1] Name=default IsRelative=1 Path=35j7fxvk.default [Profile0] Name=default-release IsRelative=1 Path=72s3mnjv.default-release-1588245081987 [General] StartWithLastProfile=1 Version=2 

Para registralo debemos apagar firefox, y si no estuvieramos en un snap haríamos

# Registrar (sustituye el nombre de tu perfil)
modutil -dbdir sql:"$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" \
  -add "SafeSign ACCV" \
  -libfile /usr/local/lib/libaetpkss.so -force

Y contesta

Module "SafeSign ACCV" added to database.

Pero como estamos en un snap debemos hacer:

pkill -f firefox

# Verificar que la copia en snap existe
ls -la $HOME/snap/firefox/common/lib/

# Si no está, copiarla
cp /usr/local/lib/libaetpkss.so $HOME/snap/firefox/common/lib/

# Eliminar el módulo registrado con la ruta incorrecta
modutil -dbdir "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" \
  -delete "SafeSign ACCV" -force

# Añadirlo con la ruta dentro del snap
modutil -dbdir "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" \
  -add "SafeSign ACCV" \
  -libfile "$HOME/snap/firefox/common/lib/libaetpkss.so" -force

# Verificar
modutil -dbdir "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" -list

Probamos a ver si lo registrado

modutil -dbdir "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" -list

Y contesta:



Listing of PKCS #11 Modules
-----------------------------------------------------------
  1. NSS Internal PKCS #11 Module
	   uri: pkcs11:library-manufacturer=Mozilla%20Foundation;library-description=NSS%20Internal%20Crypto%20Services;library-version=3.98
	 slots: 2 slots attached
	status: loaded

	 slot: NSS Internal Cryptographic Services
	token: NSS Generic Crypto Services
	  uri: pkcs11:token=NSS%20Generic%20Crypto%20Services;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203

	 slot: NSS User Private Key and Certificate Services
	token: NSS Certificate DB
	  uri: pkcs11:token=NSS%20Certificate%20DB;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203

  2. DNIe
	library name: /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
	   uri: pkcs11:library-manufacturer=OpenSC%20Project;library-description=OpenSC%20smartcard%20framework;library-version=0.25
	 slots: 1 slot attached
	status: loaded

	 slot: Identiv uTrust 2700 R Smart Card Reader [CCID Interface] (536...
	token: 
	  uri: pkcs11:

  3. SafeSign ACCV
	library name: /usr/local/lib/libaetpkss.so
	   uri: pkcs11:library-manufacturer=A.E.T.%20Europe%20B.V.;library-description=Cryptographic%20Token%20Interface;library-version=3.0
	 slots: 5 slots attached
	status: loaded

	 slot: Identiv uTrust 2700 R Smart Card Reader [CCID Interface] (536915
	token: ACCV
	  uri: pkcs11:token=ACCV;manufacturer=A.E.T.%20Europe%20B.V.;serial=028D0037000D7613;model=19C41B06010D0000

	 slot: UNAVAILABLE 1
	token: 
	  uri: pkcs11:

	 slot: UNAVAILABLE 2
	token: 
	  uri: pkcs11:

	 slot: UNAVAILABLE 3
	token: 
	  uri: pkcs11:

	 slot: UNAVAILABLE 4
	token: 
	  uri: pkcs11:
-----------------------------------------------------------

Y parece que está bien y tenemos que parar y arrancar Firefox.

Si queremos comprobar más, podemos listar los "nick names" de los certificados de la tarjeta y nos pide la contraseña:


certutil -L \
  -d "sql:$HOME/snap/firefox/common/.mozilla/firefox/e1p51k0o.Default User" \
  -h "ACCV"

Y nos muestra: el nick ACCV:EPN1 

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

Enter Password or Pin for "ACCV":
ACCV:EPN1                                                    u,u,u

Ahora debemos conectarnos a un web que pida autenticación por certificado a ver si puede ver el certificado.








martes, 14 de abril de 2026

Ubuntu 24. Instalar certificados de tarjeta pkcs#11. Problemas de certificados caducados.

Ya se vio en una entrada anterior cómo hacerlo con Ubuntu 18.

Veamos ahora para Ubuntu 24.

1. Instalación de drivers y reconocimiento de la tarjeta


#1. Instalar drivers
sudo apt update
sudo apt install pcscd pcsc-tools libccid opensc

#2. Activar el servicio
sudo systemctl enable --now pcscd

#3. Conectar el lector y meter el DNIe
pcs_scan

#4. Verificar que se detecta el lector y aparece DNIe Spain (eid)

#5. Salir con Ctrl + C

La salida de pcsc_scan debería mostrar algo parecido a esto:


pcsc_scan
PC/SC device scanner
V 1.7.1 (c) 2001-2022, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: Identiv uTrust 2700 R Smart Card Reader [CCID Interface] (53691541213332) 00 00
 
Tue Apr 14 08:48:06 2026
 Reader 0: Identiv uTrust 2700 R Smart Card Reader [CCID Interface] (53691541213332) 00 00
  Event number: 25
  Card state: Card inserted, 
  ATR: 3B 7F 96 00 00 00 6A 44 4E 49 65 10 01 01 55 04 21 03 90 00

ATR: 3B 7F 96 00 00 00 6A 44 4E 49 65 10 01 01 55 04 21 03 90 00
+ TS = 3B --> Direct Convention
+ T0 = 7F, Y(1): 0111, K: 15 (historical bytes)
  TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU
    250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 00 6A 44 4E 49 65 10 01 01 55 04 21 03 90 00
  Category indicator byte: 00 (compact TLV data object)
    Tag: 6, len: A (pre-issuing data)
      Data: 44 4E 49 65 10 01 01 55 04 21
    Mandatory status indicator (3 last bytes)
      LCS (life card cycle): 03 (Initialisation state)
      SW: 9000 (Normal processing.)

Possibly identified card (using /home/eduard/.cache/smartcard_list.txt):
3B 7F 96 00 00 00 6A 44 4E 49 65 10 01 01 55 04 21 
3B 7F 96 00 00 00 6A 44 4E 49 65 10 01 01 55 04 .. 03 90 00
	DNIE Spain (eID)
	http://www.dnielectronico.es/PortalDNIe/


2. Comprobar que el sistema ve los certificados

Ejecutamos:


pkcs11-tool --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so -O

y nos da información sobre los certificados de autenticación, firma y certificados intermedios:
  • CertAutentication (comprobaremos nuestros datos de autenticación)
  • CertFirmaDigital (mostrará nuestrso datos de firma)
  • Pueden aparecer otros certificados intermedios como CertCAIntermediaDGP
Y ahora debemos comprobar que los certificados de autenticación y firma no estén caducados

#Autenticación
pkcs11-tool --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so \
--read-object --type cert --label CertAutenticacion \
| openssl x509 -inform DER -noout -dates

# Firma
pkcs11-tool --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so \
--read-object --type cert --label CertFirmaDigital \
| openssl x509 -inform DER -noout -dates

Y para cada sentencia contesta las fechas de validez:

Using slot 0 with a present token (0x0)
notBefore=Feb 12 10:29:00 2024 GMT
notAfter=Feb 12 10:29:00 2026 GMT


3. Problema de certificado caducado

Si se ha renovado el certificado pero sigue apareciendo como caducado, puede deberse a la caché de OpenSC.ara ello conviene borrar caché y reinciar el servicio


#1. Borrar la caché del opensc
sudo rm -rf ~/.cache/opensc

#2. Matar y reiniciar el servicio pcscd
sudo pkill -f opensc
sudo systemctl restart pcscd

#3. Esperar 2-3 segundos y volver a verificar
pkcs11-tool --module /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so \
--read-object --type cert --label CertAutenticacion \
| openssl x509 -inform DER -noout -dates


Y ahora ya sale bien:

Using slot 0 with a present token (0x0)
notBefore=Apr 14 07:41:32 2026 GMT
notAfter=Apr 14 07:41:32 2028 GMT


4. Instalación en Mozilla Firefox

Con esto ya funciona en Chrome y Brave. A veces puede que no funcione y para solucionarlo se explica en el punto 5. Para que funcione en Mozilla Firefox, podemos tener el mismo problema de que se guarde el certificado antiguo en la caché.

4.1 Arreglar el tema de los certificados caducados

4.1 Ver dónde están los perfiles de Firefox

Primeramente vamos a ver donde estan los certificados de Mozilla. Ojo en un post posterior indica que hacer en caso que el Mozilla Firefox esté instalado con snap. En este caso no lo está

#1. Ver donde estan los certificados
ls ~/.mozilla/firefox/

#2. Y devuelve_
  35j7fxvk.default   
  72s3mnjv.default-release-1588245081987
  'Crash Reports'   
  installs.ini  
  'Pending Pings'   
  profiles.ini

Los dos candidatos son :

35j7fxvk.default   
72s3mnjv.default-release-1588245081987

Ahora hacemos 

cat ~/.mozilla/firefox/profiles.ini

y nos muestra:

[Install4F96D1932A9F858E]
Default=72s3mnjv.default-release-1588245081987
Locked=1

[Profile1]
Name=default
IsRelative=1
Path=35j7fxvk.default
Default=1

[Profile0]
Name=default-release
IsRelative=1
Path=72s3mnjv.default-release-1588245081987

[General]
StartWithLastProfile=1
Version=2

con lo que el candidato es 35j7fxvk.default

Y para listar los certificados o si tiene el OpenSC

#1. Listar certificados instalados
certutil -L -d sql:$HOME/.mozilla/firefox/35j7fxvk.default

#2. Ver si está el OpenSC instalado
modutil -dbdir sql:$HOME/.mozilla/firefox/35j7fxvk.default -list

4.1.2 Borrar la BD del perfil (solo si continua con los certificados caducados)

rm ~/.mozilla/firefox/35j7fxvk.default/cert9.db
rm ~/.mozilla/firefox/35j7fxvk.default/key4.db
rm ~/.mozilla/firefox/35j7fxvk.default/pkcs11.txt

4.2 Instalar el pkcs11 en Mozilla

Si no hay problemas de caducados se puede comenzar aquí.
Abrimos mozilla y en la url "about:preferences#privacy"
Tenemos que buscar Certificados - Dispositivos de Seguridad


Pulsa “Cargar”
Asumimos el niombre por defecto y escribimos (y no vamos al selector de archivos pues falla):
Ruta del módulo: /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
Aceptar

5. Instalación en Chrome

Si no funciona, reaiizar estos pasos:

1. Instalar soporte NSS tools

sudo apt install libnss3-tools

2. Añadir módulo manualmente
modutil -dbdir sql:$HOME/.pki/nssdb -add "DNIe" -libfile \ /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so

Seguramente dirá que se cierre Chrome (y también hay que cerrar Brave) pues puede dañar la base de datos.

3. Reiniciar Chrome (y Brave)

martes, 8 de abril de 2025

Gitlab(4). Cambio de certificado de servidor. Crear una CA. Certificados de servidor. Certificados Wildcard de servidor

0. Certificado caducado

Para ver si el certificado está caducado hacemos los siguientes pasos:

  1. Averiguar el dominio y la IP ( en mi caso el dominio es gitlab.municipio.es y la IP 192.168.28.XXX)
  2. Conectarse al servidor por ssh (ssh myuser@192.168.28.XXX), si tenemos una clave SSH no hará falta contraseña, pero sinó, se la da y en paz
  3. Ejecutar (sudo openssl x509 -in /etc/gitlab/ssl/gitlab.municipio.es.crt -noout -dates) donde se marca en otro color el dominio utiliado para el certificado. Nos devolvera las fechas de inicio y fin de validez del certificado
Si el certificado está caducado a veces no deja acceder por https al servidor gitlab, ni tampoco deja hacer un commit desde visual studio.

Por tanto hay que cambiar el certificado,

Pero que pasa si no tenemos un certificado emitido por una entidad certificadora o no queremos utilizar LetsEncrypt

Pues nos creamos una entidad certificadora, creamos el certificado y lo instalamos

1. Creación de una CA (entidad certificadora)

Creamos una carpeta para estos menesteres y ejecutamos dentro de esta carpeta:

# 1. Create a self-signed CA certificate and answer the questions:
#    Enter PEM pass phrase:

openssl genrsa -aes256 -out ca.key 4096
# 2. Create a self-signed CA certificate and answer the questions:
#    Country Name (2 letter code) [AU]: ES
#    State or Province Name (full name) [Some-State]:Valencia
#    Locality Name (eg, city) []:Municipio
#    Organization Name (eg, company) [Internet Widgits Pty Ltd]: Ayto
#    Organizational Unit Name (eg, section) []:Informatica
#    Common Name (e.g. server FQDN or YOUR name) []:XimoDante
#    Email Address []:ximodante@gmail.com

openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt

Y obtenemos ca.key y ca.crt (clave y certificado de CA autofirmado)

Agregamos el certificado de la CA a los certificados raiz de confianza

#1. Add the CA certificate to the certificate folder (linux)
sudo cp ca.crt /usr/local/share/ca-certificates/

#2. Update teh certificate collection
sudo update-ca-certificates


2. Creación del certificado de servidor

Creamos un fichero de configuración llamado por ejemplo gitlab_openssl.cnf con este contenido

[ req ]
default_bits       = 2048
prompt             = no
default_md         = sha256
distinguished_name = req_distinguished_name
req_extensions     = req_ext

[ req_distinguished_name ]
C  = ES
ST = Valencia
L  = Municipio
O  = AytoGitlab
CN = gitlab.municipio.es

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = gitlab.municipio.es

Creamos la clave del servidor y el CRS (Certificate Signing Request). OJO hay que tener en cuenta el SAN que apunta nuestro dominio

# Create a private key and CSR for the server
openssl req -new -nodes \
  -out gitlab.csr \
  -newkey rsa:2048 \
  -keyout gitlab.municipio.es.key \
  -config gitlab_openssl.cnf

Verificamos el contenido del CSR generado:

openssl req -in gitlab.csr -noout -text

Y contesta entre otras cosas el CN y el SAN (X509v3 Subject Alternative Name):

Subject: C = ES, ST = Valencia, L = Municipio, O = AytoGitlab, CN = gitlab.municipio.es
.....
Attributes:
            Requested Extensions:
                X509v3 Subject Alternative Name: 
                    DNS:gitlab.municipio.es
....

Ahora creamos el certificado de servidor 

openssl x509 -req -in gitlab.csr \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-out gitlab.municipio.es.crt -days 365 -sha256


3. Instalación del certificado en gitlab

Ejecutar scp para copiar estos ficheros al servidor

scp ca.crt gitlab.municipio.es.crt gitlab.municipio.es.key myuser@192.168.28.XXX:/etc/gitlab/ssl

Modificamos el fichero /etc/gitlab/gitlab.rb del servidor gitlab de manera qaue tenga estas líneas:

nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.municipio.es.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.municipio.es.key"

Ejecutamos:

#1. Actualizar cambios
sudo gitlab-ctl reconfigure

#2. Recargar gitlab
sudo gitlab-ctl restart


4. Añadir certificado raiz CA al cliente Chrome y Mozilla

Para linux tenenemos:

#!/bin/bash

CERT_FILE="ca.crt"

echo "Intentando añadir el certificado CA a los almacenes de confianza..."

# 1. Añadir al almacén de confianza del sistema (para Chrome y otros navegadores)
if command -v sudo >/dev/null 2>&1; then
  echo "Usando sudo para permisos de administrador."
  sudo cp "$CERT_FILE" /usr/local/share/ca-certificates/
  sudo update-ca-certificates
  if [ $? -eq 0 ]; then
    echo "Certificado CA añadido al almacén de confianza del sistema."
  else
    echo "Error al añadir el certificado CA al almacén de confianza del sistema."
  fi
else
  echo "Se necesitan permisos de administrador (sudo) para añadir al almacén del sistema."
  echo "Por favor, ejecuta este script con sudo."
fi

echo ""
echo "Configuración específica para Mozilla Firefox:"
echo "Mozilla Firefox utiliza su propio almacén de certificados."
echo "No se puede añadir automáticamente un certificado raíz de confianza a través de la línea de comandos de forma sencilla."
echo "El usuario debe importar manualmente el certificado en la configuración de Firefox:"
echo "  - Abrir Firefox."
echo "  - Ir a Preferencias -> Privacidad y seguridad."
echo "  - Bajar hasta la sección 'Certificados' y hacer clic en 'Ver certificados'."
echo "  - Ir a la pestaña 'Autoridades' y hacer clic en 'Importar'."
echo "  - Seleccionar el archivo '$CERT_FILE' y seguir las instrucciones."
echo "  - Asegurarse de marcar la casilla 'Confiar en esta CA para identificar sitios web'."

echo ""
echo "Proceso completado (la adición a Firefox es manual)."

y para windows:

@echo off
echo Intentando añadir el certificado CA a los almacenes de confianza...

set CERT_FILE="ca.crt"

echo.
echo Añadiendo al almacén de autoridades de certificación raíz de confianza (para Chrome y otros navegadores)...
certutil -addstore Root "%CERT_FILE%"
if %errorlevel% == 0 (
    echo Certificado CA añadido al almacén de confianza del sistema.
) else (
    echo Error al añadir el certificado CA al almacén de confianza del sistema (requiere permisos de administrador).
    echo Por favor, ejecuta este script como administrador.
)

echo.
echo Configuración específica para Mozilla Firefox:
echo Mozilla Firefox utiliza su propio almacén de certificados.
echo No se puede añadir automáticamente un certificado raíz de confianza a través de la línea de comandos de forma sencilla.
echo El usuario debe importar manualmente el certificado en la configuración de Firefox:
echo   - Abrir Firefox.
echo   - Ir a Opciones -> Privacidad y seguridad.
echo   - Bajar hasta la sección 'Certificados' y hacer clic en 'Ver certificados...'.
echo   - Ir a la pestaña 'Autoridades' y hacer clic en 'Importar...'.
echo   - Seleccionar el archivo "%CERT_FILE%" y seguir las instrucciones.
echo   - Asegurarse de marcar la casilla 'Confiar en esta CA para identificar sitios web'.

echo.
echo Proceso completado (la adición a Firefox es manual).
pause

En Windows también se puede hacer:

1. Abre el Administrador de certificados

Presiona Win + R, escribe: certmgr.msc

2. Importar el certificado a "Entidades de certificación raíz de confianza", boton derecho, "Todas las tareas", "Importar" y le damos la ruta del certificado raiz CA


2. Cuando te pregunte "Colocar todos los certificados en el siguiente almacén", asegúrate de que esté seleccionado:

3. Reinicia Chrome


5. Crear certificados de servidor wildcard

Si queremos crear certificado de servidor wildcard para los dominios *.municipio.es hacemos:

#1. Crear la clave privada
openssl genrsa -out wildcard.municipio.es.key 2048

#2. Crear el archivo de configuración wildcard.cnf con este contenido
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext

[ dn ]
C = ES                   # País (España)
ST = Provincia           # Provincia
L = Ciudad               # Localidad
O = Organización         # Nombre de tu organización
CN = *.municipio.es      # Dominio wildcard

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = *.municipio.es   # Dominio principal wildcard
DNS.2 = municipio.es     # Dominio raíz (opcional)

#3. Generar el CSR (Certificate Signing Request)
openssl req -new -key wildcard.municipio.es.key \
-out wildcard.municipio.es.csr \
-config wildcard.cnf

#4. Generar y firmar el certificado 
openssl x509 -req -in wildcard.municipio.es.csr \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-out wildcard.municipio.es.crt \
-days 365 -sha256 \
-extfile wildcard.cnf -extensions req_ext


#5. Verificar los datos del certificado (Subject: CN y X509v3 Subject Alternative Name: DNS)
openssl x509 -in wildcard.municipio.es.crt -text -noout

Si se quiere instalar en gitlab, hay que cambiar un certrificado por el otro en la carpeta /etc/gitlab/ssl y modificar el fichero del servidor /etc/gitlab/gitlab.rb