EJBCA
Integración con la EJBCA
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:
FROM primekey/ejbca-ce:7.4.3.2
USER root
RUN ["microdnf", "install", "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64"]
RUN ["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
COPY web.properties /opt/primekey/ejbca/conf/
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 must be used to generate keys for this HSM provider.
cryptotoken.p11.lib.115.canGenerateKey=true
cryptotoken.p11.lib.255.name=P11 Proxy
cryptotoken.p11.lib.255.file=/opt/primekey/p11proxy-client/p11proxy-client.so
cryptotoken.p11.lib.255.canGenerateKeyMsg=ClientToolBox must be used to generate keys for this HSM provider.
# Normally key generation will be allowed via the UI
cryptotoken.p11.lib.255.canGenerateKey=true
# Enable usage of Azure Key Vault Crypto Token in the Admin UI
keyvault.cryptotoken.enabled=true
# Enable usage of AWS KMS Crypto Token in the Admin UI
awskms.cryptotoken.enabled=true
web.docbaseuri=disabled
web.reqcert=false
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:
FROM primekey/ejbca-ce:7.4.3.2
USER root
RUN ["microdnf", "install", "libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64"]
RUN ["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
COPY web.properties /opt/primekey/ejbca/conf/
COPY dinamo.cfg /opt/primekey/ejbca/conf/
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 must be used to generate keys for this HSM provider.
cryptotoken.p11.lib.115.canGenerateKey=true
cryptotoken.p11.attr.115.file=/opt/primekey/ejbca/conf/dinamo.cfg
cryptotoken.p11.lib.255.name=P11 Proxy
cryptotoken.p11.lib.255.file=/opt/primekey/p11proxy-client/p11proxy-client.so
cryptotoken.p11.lib.255.canGenerateKeyMsg=ClientToolBox must be used to generate keys for this HSM provider.
# Normally key generation will be allowed via the UI
cryptotoken.p11.lib.255.canGenerateKey=true
# Enable usage of Azure Key Vault Crypto Token in the Admin UI
keyvault.cryptotoken.enabled=true
# Enable usage of AWS KMS Crypto Token in the Admin UI
awskms.cryptotoken.enabled=true
web.docbaseuri=disabled
web.reqcert=false
attributes(*,*,*) = {
CKA_TOKEN = true
}
attributes(*,CKO_PRIVATE_KEY,*) = {
CKA_PRIVATE = true
CKA_SIGN = true
CKA_DECRYPT = true
CKA_EXTRACTABLE = false
CKA_SENSITIVE = true
}
disabledMechanisms = {
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
}
Ejecutar un contenedor
-
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:
token criptográficoName: qualquer nome Type: PKCS#11 Authentication Code: senha do usuário que está na variável de ambiente DFENCE_PKCS11_USER que está no Dockerfile Library: HSM Dinamo Reference Type: Slot ID Reference: 1 Attributes file: Default ou dinamo.cfg (no caso do HSM estar modo restrito)
-
Una vez creado el token criptográfico, se pueden generar las claves pulsando el botón Generar nuevo par de claves.