Apache#
Puede configurar Apache httpd para utilizar NetHSM a través del motor OpenSSL que, a su vez, utiliza el módulo PKCS#11 de NetHSM.
El archivo del certificado debe estar en el disco, pero la clave privada puede utilizarse desde el NetHSM.
Encontrará un ejemplo completo en ` <#example>` __.
Configuración de OpenSSL#
Configure el motor OpenSSL siguiendo la guía de configuración del motor OpenSSL de ` <openssl.html#engine>` __. (Los proveedores OpenSSL aún no son compatibles con httpd de Apache).
Configuración Httpd#
Añada las siguientes líneas a su httpd.conf
:
Listen 443
#...
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
#...
<VirtualHost *:443>
DocumentRoot /usr/local/apache2/htdocs
SSLEngine on
SSLCertificateFile /certs/certificate.pem
SSLCertificateKeyFile "pkcs11:object=webserver"
ErrorLog /tmp/a-error.log
CustomLog /tmp/a-access.log combined
</VirtualHost>
El SSLCertificateFile
debe apuntar a un archivo de certificado en el disco.
El SSLCertificateKeyFile
debe ser un PKCS#11 URI que apunte a la clave privada en el NetHSM.
Nota
Debe generar el certificado por separado y luego cargarlo en el NetHSM. Si el certificado en el disco y la clave en el NetHSM no coinciden, httpd no se iniciará.
libnethsm_pkcs11 Configuración#
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
Para asegurar la contraseña puede proporcionarla a través de una variable de entorno (véase Setup) o proporcionarla en la configuración de httpd:
SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";
Ejemplo#
Si quieres experimentar con el ejemplo ` <https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>` __ usa git para clonar el repositorio nethsm-pkcs11 y ejecuta los siguientes comandos:
Advertencia
Al ejecutar el script de generación se borra la clave webserver
y se sustituye.
Configure un NetHSM, ya sea uno real o un contenedor. Consulte la guía de inicio ` <getting-started>` __ para obtener más información.
Si su NetHSM no se ejecuta en localhost, tendrá que cambiar la URL de las peticiones curl en
container/apache/generate.sh
para que apunte a su NetHSM.Cambie la configuración de libnethsm_pkcs11 para que coincida con su NetHSM en
container/apache/p11nethsm.conf
.Genere el certificado y la clave.
./container/apache/generate.sh
Construye el contenedor.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Ejecuta el contenedor.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
El contenedor estará disponible en https://localhost:9443/.