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>
The SSLCertificateFile must point to a certificate file on the disk.
The SSLCertificateKeyFile should be a PKCS#11 URI pointing to the private key in the 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"
To secure the password you can provide it via an environment variable (see Passwords) or provide it in the httpd configuration:
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.
Configure a NetHSM, either a real one or a container. See the getting-started guide for more information. Besides an administrator, you are going to need an operator account.
Download en installeer de nieuwste versie van het stuurprogramma nethsm-pkcs11 dat beschikbaar is vanaf hier.
Installeer de OpenSSL PKCS11 engine zoals beschreven in de OpenSSL Handleiding. U hoeft geen configuratiebestand te maken.
Pas de variabelen
HOST,ADMIN_ACCOUNTenADMIN_ACCOUNT_PWDincontainer/apache/generate.shzodanig aan datHOSTde URL en poort van je NetHSM bevat,ADMIN_ACCOUNTde gebruikersnaam van een administratoraccount bevat enADMIN_ACCOUNT_PWDhet bijbehorende wachtwoord. Configureer verder het absolute pad van de OpenSSL PKCS11 engine inOPENSSL_PKCS11_ENGINE_PATHen het absolute pad van de NetHSM PKCS11 library inNETHSM_PKCS11_LIBRARY_PATH.Create a NetHSM PKCS11 configuration file in one of the known locations, e.g.,
/etc/nitrokey/p11nethsm.conf. It must have configured an operator account and use the same NetHSM instance specified in the generate script before.Werk de PKCS11-configuratie bij in
container/apache/p11nethsm.confmet de URL van je NetHSMs en geldige operatorgegevens.Genereer het certificaat en de sleutel.
./container/apache/generate.sh
Bouw de container.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Voer de container uit.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
De Apache-testpagina is beschikbaar op https://localhost:9443/. Merk op dat uw browser u hopelijk zal waarschuwen dat het websitecertificaat zelfondertekend is.