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.

  1. Configure un NetHSM, ya sea uno real o un contenedor. Consulte la guía de inicio ` <getting-started>` __ para obtener más información.

  2. 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.

  3. Cambie la configuración de libnethsm_pkcs11 para que coincida con su NetHSM en container/apache/p11nethsm.conf.

  4. Genere el certificado y la clave.

./container/apache/generate.sh
  1. Construye el contenedor.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Ejecuta el contenedor.

docker run -p 9443:443 -p 9080:80 pkcs-httpd

El contenedor estará disponible en https://localhost:9443/.