Apache#
Du kan konfigurera Apache httpd att använda NetHSM via OpenSSL-motorn som sedan använder NetHSM:s PKCS#11-modul.
Certifikatfilen måste finnas på hårddisken men den privata nyckeln kan användas från NetHSM.
Ett fullständigt exempel finns tillgängligt nedan.
Konfiguration av OpenSSL#
Konfigurera OpenSSL-motorn genom att följa OpenSSL Engine setup guide. (OpenSSL Providers stöds ännu inte av Apache httpd.)
Httpd-konfiguration#
Lägg till följande rader i din 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>
SSLCertificateFile
måste peka på en certifikatfil på disken.
SSLCertificateKeyFile
ska vara en PKCS#11 URI som pekar på den privata nyckeln i NetHSM.
Observera
Du måste generera certifikatet separat och sedan ladda upp det till NetHSM. Om certifikatet på disken och nyckeln i NetHSM inte matchar varandra startar inte httpd.
libnethsm_pkcs11 Konfiguration#
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
För att säkra lösenordet kan du ange det via en miljövariabel (se Lösenord) eller ange det i httpd-konfigurationen:
SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";
Exempel#
Om du vill experimentera med exemplet ` <https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>`__ använder du git för att klona nethsm-pkcs11 repository och kör följande kommandon:
Varning
När genereringsskriptet körs raderas nyckeln webserver
och ersätts med en ny.
Konfigurera en NetHSM, antingen en riktig eller en container. Mer information finns i Getting-started guide. Förutom en administratör kommer du att behöva ett operatörskonto.
Ladda ner och installera den senaste versionen av drivrutinen nethsm-pkcs11 som finns tillgänglig här.
Installera OpenSSL PKCS11-motorn enligt beskrivningen i OpenSSL Manual. Du behöver inte skapa någon konfigurationsfil.
Justera variablerna
HOST
,ADMIN_ACCOUNT
ochADMIN_ACCOUNT_PWD
icontainer/apache/generate.sh
så attHOST
innehåller din NetHSMs URL och port,ADMIN_ACCOUNT
innehåller ett administratörskontos användarnamn ochADMIN_ACCOUNT_PWD
motsvarande lösenord. Konfigurera vidare den absoluta sökvägen för OpenSSL PKCS11-motorn iOPENSSL_PKCS11_ENGINE_PATH
och den absoluta sökvägen för NetHSM PKCS11-biblioteket iNETHSM_PKCS11_LIBRARY_PATH
.Skapa en NetHSM PKCS11-konfigurationsfil på en av de kända platserna, t.ex.
/etc/nitrokey/p11nethsm.conf
. Den måste ha konfigurerat ett operatörskonto och använda samma NetHSM-instans som angavs i genereringsskriptet tidigare.Uppdatera PKCS11-konfigurationen i
container/apache/p11nethsm.conf
med din NetHSMs-URL och giltiga operatörsautentiseringsuppgifter.Generera certifikat och nyckel.
./container/apache/generate.sh
Bygg upp behållaren.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Kör containern.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
Testsidan för Apache kommer att finnas tillgänglig på https://localhost:9443/. Observera att din webbläsare, förhoppningsvis, kommer att varna dig för att webbplatsens certifikat är självsignerat.