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.

  1. Skonfiguruj NetHSM, rzeczywisty lub w kontenerze. Więcej informacji można znaleźć w przewodniku dla początkujących ` <getting-started>` __.

  2. 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.

  3. Zmień konfigurację libnethsm_pkcs11, aby pasowała do twojego NetHSM w container/apache/p11nethsm.conf.

  4. Wygeneruj certyfikat i klucz.

./container/apache/generate.sh
  1. Zbuduj pojemnik.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Uruchom kontener.

docker run -p 9443:443 -p 9080:80 pkcs-httpd

Pojemnik będzie dostępny na stronie https://localhost:9443/.