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.
Configuración de OpenSSL#
Configure el motor OpenSSL siguiendo la guía de configuración del motor OpenSSL de. (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 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 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. 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, 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.