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 Passwords) 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.html>` __ para obtener más información. Además de un administrador, vas a necesitar una cuenta de operador.
Descargue e instale la última versión del controlador nethsm-pkcs11 disponible desde aquí.
Instale el motor PKCS11 de OpenSSL como se describe en el Manual de OpenSSL ` <openssl.html>` __. No es necesario crear un archivo de configuración.
Ajuste las variables
HOST
,ADMIN_ACCOUNT
yADMIN_ACCOUNT_PWD
encontainer/apache/generate.sh
de forma queHOST
contenga la URL y el puerto de su NetHSM,ADMIN_ACCOUNT
contenga el nombre de usuario de una cuenta de administrador yADMIN_ACCOUNT_PWD
la contraseña correspondiente. Configure además la ruta absoluta del motor PKCS11 de OpenSSL enOPENSSL_PKCS11_ENGINE_PATH
y la ruta absoluta de la biblioteca PKCS11 de NetHSM enNETHSM_PKCS11_LIBRARY_PATH
.Cree un archivo de configuración PKCS11 de NetHSM en una de las ubicaciones conocidas de ` <pkcs11-setup.html#configuration>` __, por ejemplo,
/etc/nitrokey/p11nethsm.conf
. Debe tener configurada una cuenta de operador y utilizar la misma instancia de NetHSM especificada anteriormente en el script generate.Actualice la configuración PKCS11 en
container/apache/p11nethsm.conf
con su URL NetHSMs y credenciales de operador válidas.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
La página de prueba de Apache estará disponible en https://localhost:9443/. Tenga en cuenta que su navegador, con suerte, le advertirá de que el certificado del sitio web es autofirmado.