Apache¶
Můžete nakonfigurovat Apache httpd, aby používal NetHSM prostřednictvím enginu OpenSSL, který pak používá modul PKCS#11 NetHSM.
Soubor certifikátu musí být na disku, ale soukromý klíč lze použít z NetHSM.
Úplný příklad je k dispozici na pod.
Konfigurace protokolu OpenSSL¶
Nastavte engine OpenSSL podle průvodce nastavením OpenSSL Engine. (Poskytovatelé OpenSSL zatím nejsou podporováni serverem Apache httpd.)
Konfigurace Httpd¶
Do stránky httpd.conf
přidejte následující řádky :
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>
Adresa SSLCertificateFile
musí ukazovat na soubor s certifikátem na disku.
SSLCertificateKeyFile
by měl být PKCS#11 URI ukazující na soukromý klíč v NetHSM.
Poznámka
Certifikát je nutné vygenerovat samostatně a poté jej nahrát do NetHSM. Pokud se certifikát na disku a klíč v NetHSM neshodují, httpd se nespustí.
libnethsm_pkcs11 Konfigurace¶
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
Heslo můžete zabezpečit pomocí proměnné prostředí (viz Hesla) nebo jej zadat v konfiguraci httpd:
SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";
Příklad¶
Pokud chcete experimentovat s uvedeným `příkladem<https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>`__, použijte git pro klonování repozitáře nethsm-pkcs11 a spusťte následující příkazy:
Varování
Spuštěním generovacího skriptu se odstraní klíč webserver
a nahradí se.
Nakonfigurujte NetHSM, buď skutečný, nebo kontejner. Další informace naleznete v příručce getting-started. Kromě účtu správce budete potřebovat i účet operátora.
Stáhněte si a nainstalujte nejnovější verzi nethsm-pkcs11 ovladače dostupnou odtud.
Nainstalujte engine OpenSSL PKCS11 podle popisu v příručce OpenSSL. Není třeba vytvářet konfigurační soubor.
Upravte proměnné
HOST
,ADMIN_ACCOUNT
aADMIN_ACCOUNT_PWD
vcontainer/apache/generate.sh
tak, abyHOST
obsahovala adresu URL a port vašeho NetHSM,ADMIN_ACCOUNT
obsahovala uživatelské jméno účtu správce aADMIN_ACCOUNT_PWD
odpovídající heslo. Dále nakonfigurujte absolutní cestu k enginu OpenSSL PKCS11 vOPENSSL_PKCS11_ENGINE_PATH
a absolutní cestu ke knihovně NetHSM PKCS11 vNETHSM_PKCS11_LIBRARY_PATH
.Vytvořte konfigurační soubor NetHSM PKCS11 v jednom ze známých umístění ` <pkcs11-setup.html#configuration>`__, např.
/etc/nitrokey/p11nethsm.conf
. Musí mít nakonfigurovaný účet operátora a používat stejnou instanci NetHSM, která byla zadána v předchozím generovacím skriptu.Aktualizujte konfiguraci PKCS11 na adrese
container/apache/p11nethsm.conf
pomocí adresy URL NetHSM a platných pověření operátora.Vygenerujte certifikát a klíč.
./container/apache/generate.sh
Sestavte kontejner.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Spusťte kontejner.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
Testovací stránka Apache bude k dispozici na adrese https://localhost:9443/. Všimněte si, že váš prohlížeč vás, doufejme, upozorní, že certifikát webových stránek je podepsán samotným uživatelem.