Apache#

Je kunt Apache httpd configureren om NetHSM te gebruiken via de OpenSSL engine die dan de PKCS#11 module van NetHSM gebruikt.

Het certificaatbestand moet op de schijf staan, maar de privésleutel kan worden gebruikt vanaf de NetHSM.

Een volledig voorbeeld is beschikbaar onder.

OpenSSL-configuratie#

Stel de OpenSSL engine in volgens de OpenSSL Engine setup guide. (OpenSSL Providers worden nog niet ondersteund door Apache httpd).

Httpd-configuratie#

Voeg de volgende regels toe aan je 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>

De SSLCertificateFile moet verwijzen naar een certificaatbestand op de schijf.

De SSLCertificateKeyFile moet een PKCS#11 URI zijn die verwijst naar de privésleutel in de NetHSM.

Notitie

Je moet het certificaat apart genereren en vervolgens uploaden naar de NetHSM. Als het certificaat op schijf en de sleutel in de NetHSM niet overeenkomen zal httpd niet starten.

libnethsm_pkcs11 Configuratie#

slots:
  - label: LocalHSM
    description: Local HSM (docker)
    url: "https://192.168.3.161:8443/api/v1"
    operator:
      username: "operator"
      password: "opPassphrase"

Om het wachtwoord te beveiligen kun je het opgeven via een omgevingsvariabele (zie Setup) of het opgeven in de httpd configuratie:

SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";

Voorbeeld#

Als je wilt experimenteren met het gegeven voorbeeld gebruik dan git om de nethsm-pkcs11 repository te clonen en voer de volgende commando’s uit:

Waarschuwing

Het genereren van het script verwijdert de webserver sleutel en vervangt deze.

  1. Configureer een NetHSM, een echte of een container. Zie de getting-started guide voor meer informatie.

  2. Als je NetHSM niet op localhost draait, dan moet je de URL van de curl requests in container/apache/generate.sh wijzigen om naar je NetHSM te wijzen.

  3. Wijzig de configuratie van libnethsm_pkcs11 zodat deze overeenkomt met je NetHSM in container/apache/p11nethsm.conf.

  4. Genereer het certificaat en de sleutel.

./container/apache/generate.sh
  1. Bouw de container.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Voer de container uit.

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

De container is beschikbaar op https://localhost:9443/.