Apache#
Możesz skonfigurować Apache httpd do korzystania z NetHSM za pośrednictwem silnika OpenSSL, który następnie wykorzystuje moduł PKCS#11 NetHSM.
Plik certyfikatu musi znajdować się na dysku, ale klucz prywatny może być używany z NetHSM.
Pełny przykład jest dostępny na stronie poniżej.
Konfiguracja OpenSSL#
Skonfiguruj silnik OpenSSL, postępując zgodnie z instrukcją konfiguracji silnika OpenSSL. (Dostawcy OpenSSL nie są jeszcze obsługiwani przez Apache httpd).
Konfiguracja httpd#
Dodaj następujące linie do swojego 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>
Adres SSLCertificateFile
musi wskazywać na plik certyfikatu na dysku.
SSLCertificateKeyFile
powinien być PKCS#11 URI wskazującym na klucz prywatny w NetHSM.
Informacja
Certyfikat należy wygenerować osobno, a następnie przesłać go do NetHSM. Jeśli certyfikat na dysku i klucz w NetHSM nie są zgodne, httpd nie uruchomi się.
libnethsm_pkcs11 Konfiguracja#
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
Aby zabezpieczyć hasło, można podać je za pomocą zmiennej środowiskowej (patrz Setup) lub podać je w konfiguracji httpd:
SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";
Przykład#
Jeśli chcesz poeksperymentować z podanym przykładem ` <https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>` __ użyj git, aby sklonować repozytorium nethsm-pkcs11 i uruchom następujące polecenia:
Ostrzeżenie
Uruchomienie skryptu generującego usuwa klucz webserver
i zastępuje go.
Skonfiguruj NetHSM, rzeczywisty lub w kontenerze. Więcej informacji można znaleźć w przewodniku dla początkujących ` <getting-started>` __.
Jeśli twój NetHSM nie działa na localhost, będziesz musiał zmienić adres URL żądań curl w
container/apache/generate.sh
, aby wskazywał na twój NetHSM.Zmień konfigurację libnethsm_pkcs11, aby pasowała do twojego NetHSM w
container/apache/p11nethsm.conf
.Wygeneruj certyfikat i klucz.
./container/apache/generate.sh
Zbuduj pojemnik.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Uruchom kontener.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
Pojemnik będzie dostępny na stronie https://localhost:9443/.