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.

  2. Ak váš NetHSM nie je spustený na localhoste, budete musieť zmeniť adresu URL požiadaviek curl v container/apache/generate.sh tak, aby ukazovala na váš NetHSM.

  3. Zmeňte konfiguráciu libnethsm_pkcs11 tak, aby zodpovedala vášmu NetHSM na container/apache/p11nethsm.conf.

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

Kontajner bude k dispozícii na https://localhost:9443/.