EJBCA
Guía de uso de EJBCA con WildFly y PKCS11
EJBCA es un software gratuito para PKI. Con él puede configurar una estructura de autoridad de certificación para emitir certificados con las claves generadas y almacenadas en el HSM.
Configuración del entorno
Para facilitar la integración en la guía, se utilizará un contenedor Docker proporcionado por primekey, que es el mantenedor.
Se puede crear fácilmente un Dockerfile para generar el contenedor y ejecutarlo. A continuación se muestra un ejemplo del Dockerfile y el archivo de configuración del servidor web con los parámetros necesarios:
-
Dockerfile:
DE primekey/ejbca-ce:7.4.3.2 USUARIO root EJECUTAR ["microdnf", "install", "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64"] EJECUTAR ["ln", "-s", "/usr/lib64/libnsl.so.2", "/usr/lib64/libnsl.so.1"] ADD dinamo -4.7.11-1.el7.centos.x86_64.rpm . RUN ["/usr/bin/rpm", "--nosignature", "-i", "dinamo-4.7.11-1.el7.centos.x86_64.rpm"] RUN ["/usr/bin/rm", "dinamo-4.7.11-1.el7.centos.x86_64.rpm"] ENV TLS_SETUP_ENABLED=simple ENV DFENCE_PKCS11_IP=192.168.1.101 ENV DFENCE_PKCS11_USER=master ENV HSM_DISABLE_LEGACY_OPERATIONS=1 EXPOSE 8080 EXPOSE 8443 COPIAR web.properties /opt/primekey/ejbca/conf/
-
web.properties:
httpserver.pubhttp=80 httpserver.pubhttps=443 httpserver.privhttps=443 httpserver.external.privhttps=443 web.reqcertindb=false cryptotoken.p11.lib.115.name=HSM Dinamo cryptotoken.p11.lib.115.file=/usr/lib64/libtacndp11.so cryptotoken.p11.lib.115.canGenerateKeyMsg=ClientToolBox debe utilizarse para generar claves para este proveedor de HSM. cryptotoken.p11.lib.115.canGenerateKey=true cryptotoken.p11.lib.255.name=Proxy P11 cryptotoken.p11.lib.255.file=/opt/primekey/p11proxy-client/p11proxy-client.so cryptotoken.p11.lib.255.canGenerateKeyMsg=ClientToolBox debe utilizarse para generar claves para este proveedor HSM. # Normalmente se permitirá la generación de claves a través de la interfaz de usuario cryptotoken.p11.lib.255.canGenerateKey=true # Habilitar el uso de Azure Key Vault Crypto Token en la interfaz de administración keyvault.cryptotoken.enabled=true # Habilitar el uso del token criptográfico AWS KMS en la interfaz de administración awskms.cryptotoken.enabled=true web.docbaseuri=desactivado web.reqcert=falso
Es importante mirar la versión del software cliente HSM que se está copiando en el contenedor y modificarla en consecuencia. Puede descargarlo desde Descargas, y la versión debe ser al menos 4.7.12
Modo restringido
Para utilizar EJBCA en modo restringido, es necesario incluir una entrada en el archivo de configuración del servidor web que apunte a otro archivo de atributos. A continuación se muestran los archivos ya configurados para el modo restringido:
-
Dockerfile:
DE primekey/ejbca-ce:7.4.3.2 USUARIO root EJECUTAR ["microdnf", "install", "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64"] EJECUTAR ["ln", "-s", "/usr/lib64/libnsl.so.2", "/usr/lib64/libnsl.so.1"] ADD dinamo -4.7.12-1.el7.centos.x86_64.rpm . RUN ["/usr/bin/rpm", "--nosignature", "-i", "dinamo-4.7.12-1.el7.centos.x86_64.rpm"] RUN ["/usr/bin/rm", "dinamo-4.7.12-1.el7.centos.x86_64.rpm"] ENV TLS_SETUP_ENABLED=simple ENV DFENCE_PKCS11_IP=192.168.1.101 ENV DFENCE_PKCS11_USER=master ENV HSM_DISABLE_LEGACY_OPERATIONS=1 EXPOSE 8080 EXPOSE 8443 COPIA web.properties /opt/primekey/ejbca/conf/ COPIA dinamo .cfg /opt/primekey/ejbca/conf/
-
web.properties:
httpserver.pubhttp=80 httpserver.pubhttps=443 httpserver.privhttps=443 httpserver.external.privhttps=443 web.reqcertindb=false cryptotoken.p11.lib.115.name=HSM Dinamo cryptotoken.p11.lib.115.file=/usr/lib64/libtacndp11.so cryptotoken.p11.lib.115.canGenerateKeyMsg=ClientToolBox debe utilizarse para generar claves para este proveedor de HSM. cryptotoken.p11.lib.115.canGenerateKey=true cryptotoken.p11.attr.115.file=/opt/primekey/ejbca/conf/dinamo.cfg cryptotoken.p11.lib.255.name=Proxy P11 cryptotoken.p11.lib.255.file=/opt/primekey/p11proxy-client/p11proxy-client.so cryptotoken.p11.lib.255.canGenerateKeyMsg=ClientToolBox debe utilizarse para generar claves para este proveedor HSM. # Normalmente se permitirá la generación de claves a través de la interfaz de usuario cryptotoken.p11.lib.255.canGenerateKey=true # Habilitar el uso de Azure Key Vault Crypto Token en la interfaz de administración keyvault.cryptotoken.enabled=true # Habilitar el uso del token criptográfico AWS KMS en la interfaz de administración awskms.cryptotoken.enabled=true web.docbaseuri=desactivado web.reqcert=falso
-
dinamo.cfg:
attributes(*,*,*) = { CKA_TOKEN = true } attributes(*,CKO_CLAVE_PRIVADA,*) = { CKA_PRIVADO = verdadero CKA_SIGN = verdadero CKA_DECRYPT = true CKA_EXTRACTABLE = false CKA_SENSITIVO = true } disabledMechanismos = { CKM_RSA_X_509 CKM_SHA_1 CKM_MD2 CKM_MD5 CKM_SHA1_RSA_PKCS CKM_MD2_RSA_PKCS CKM_MD5_RSA_PKCS CKM_RSA_PKCS }
Creación y ejecución de contenedores.
-
Para crear el contenedor, basta con utilizar el siguiente comando en el directorio donde se encuentra el Dockerfile. Recuerde que los archivos de cliente,
propiedades.web
edinamo.cfg
(en el caso del modo restringido) deben estar en el mismo directorio:docker build -t ejbca .
después:
docker run -it --rm -p 80:8080 -p 443:8443 -h mycahostname -e TLS_SETUP_ENABLED="simple" ejbca
-
Cuando el servidor se active, conéctate utilizando el navegador en: https://127.0.0.1/ejbca/adminweb/ .
-
A continuación, haga clic en el menú Crypto Tokens para crear la conexión con el HSM, haga clic en Crear nuevo.
-
Los parámetros que hay que poner en el token criptográfico son:
Nombre: cualquier nombre Tipo: PKCS#11 Código de autenticación: contraseña de usuario en la variable de entorno DFENCE_PKCS11_USER en el Dockerfile. Biblioteca: HSM Dinamo Referencia Tipo: ID de ranura Referencia: 1 Archivo de atributos: Default o dinamo.cfg (si HSM está en modo restringido)
-
Una vez creado el token criptográfico, se pueden generar las claves pulsando el botón Generar nuevo par de claves.