Apache#

Môžete nakonfigurovať Apache httpd na používanie NetHSM prostredníctvom enginu OpenSSL, ktorý potom používa modul PKCS#11 NetHSM.

Súbor s certifikátom musí byť na disku, ale súkromný kľúč možno použiť z NetHSM.

Úplný príklad je k dispozícii na pod.

Konfigurácia OpenSSL#

Nastavte engine OpenSSL podľa návodu na nastavenie OpenSSL Engine. (Poskytovatelia OpenSSL zatiaľ nie sú podporovaní Apache httpd.)

Konfigurácia Httpd#

Na stránku httpd.conf pridajte nasledujúce riadky :

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 musí ukazovať na súbor s certifikátom na disku.

SSLCertificateKeyFile by mal byť PKCS#11 URI ukazujúci na súkromný kľúč v NetHSM.

Poznámka

Certifikát musíte vygenerovať samostatne a potom ho nahrať do NetHSM. Ak sa certifikát na disku a kľúč v NetHSM nezhodujú, httpd sa nespustí.

Konfigurácia libnethsm_pkcs11#

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čiť prostredníctvom premennej prostredia (pozri Setup) alebo ho môžete zadať v konfigurácii httpd:

SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";

Príklad#

Ak chcete experimentovať s uvedeným príkladom ` <https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>` __, použite git na klonovanie repozitára nethsm-pkcs11 a spustite nasledujúce príkazy:

Varovanie

Spustením generovacieho skriptu sa odstráni kľúč webserver a nahradí sa.

  1. Nakonfigurujte NetHSM, buď skutočný, alebo kontajner. Viac informácií nájdete v príručke getting-started guide. Okrem účtu správcu budete potrebovať aj účet operátora.

  2. Stiahnite si a nainštalujte najnovšiu verziu nethsm-pkcs11 ovládača , ktorá je k dispozícii na adrese.

  3. Nainštalujte engine OpenSSL PKCS11 podľa opisu v príručke OpenSSL. Konfiguračný súbor nemusíte vytvárať.

  4. Upravte premenné HOST, ADMIN_ACCOUNT a ADMIN_ACCOUNT_PWD v container/apache/generate.sh tak, aby HOST obsahovala adresu URL a port vášho NetHSM, ADMIN_ACCOUNT obsahovala používateľské meno administrátorských účtov a ADMIN_ACCOUNT_PWD príslušné heslo. Ďalej nakonfigurujte absolútnu cestu k OpenSSL PKCS11 engine v OPENSSL_PKCS11_ENGINE_PATH a absolútnu cestu k NetHSM PKCS11 knižnici v NETHSM_PKCS11_LIBRARY_PATH.

  5. Vytvorte konfiguračný súbor NetHSM PKCS11 v jednom zo známych umiestnení ` <pkcs11-setup.html#configuration>` __, napr. /etc/nitrokey/p11nethsm.conf. Musí mať nakonfigurovaný účet operátora a používať tú istú inštanciu NetHSM, ktorá bola predtým uvedená v generovacom skripte.

  6. Aktualizujte konfiguráciu PKCS11 na stránke container/apache/p11nethsm.conf s vašou adresou URL NetHSM a platnými povereniami operátora.

  7. Vygenerujte certifikát a kľúč.

./container/apache/generate.sh
  1. Zostavte kontajner.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Spustite kontajner.

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

Testovacia stránka Apache bude k dispozícii na adrese https://localhost:9443/. Všimnite si, že váš prehliadač vás, dúfajme, upozorní, že certifikát webových stránok je podpísaný samopodpisom.