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 Hasła) 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.html>`__. Oprócz administratora potrzebne będzie konto operatora.
Pobierz i zainstaluj najnowszą wersję sterownika nethsm-pkcs11 dostępną tutaj.
Zainstaluj silnik OpenSSL PKCS11 zgodnie z opisem w podręczniku OpenSSL Manual. Nie trzeba tworzyć pliku konfiguracyjnego.
Dostosuj zmienne
HOST
,ADMIN_ACCOUNT
iADMIN_ACCOUNT_PWD
wcontainer/apache/generate.sh
tak, abyHOST
zawierał adres URL i port NetHSM,ADMIN_ACCOUNT
zawierał nazwę użytkownika konta administratora, aADMIN_ACCOUNT_PWD
odpowiednie hasło. Dalej skonfiguruj bezwzględną ścieżkę silnika OpenSSL PKCS11 wOPENSSL_PKCS11_ENGINE_PATH
i bezwzględną ścieżkę biblioteki NetHSM PKCS11 wNETHSM_PKCS11_LIBRARY_PATH
.Utwórz plik konfiguracyjny NetHSM PKCS11 w jednej ze znanych lokalizacji ` <pkcs11-setup.html#configuration>`__, np.
/etc/nitrokey/p11nethsm.conf
. Musi on mieć skonfigurowane konto operatora i używać tej samej instancji NetHSM określonej wcześniej w skrypcie generowania.Zaktualizuj konfigurację PKCS11 w
container/apache/p11nethsm.conf
za pomocą adresu URL NetHSMs i prawidłowych poświadczeń operatora.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
Strona testowa Apache będzie dostępna pod adresem https://localhost:9443/. Należy pamiętać, że przeglądarka, miejmy nadzieję, będzie ostrzegać, że certyfikat strony jest samopodpisany.