Apache#

Nastavite lahko Apache httpd za uporabo NetHSM prek gonilnika OpenSSL, ki nato uporablja modul PKCS#11 NetHSM.

Datoteka potrdila mora biti na disku, zasebni ključ pa se lahko uporabi v NetHSM.

Celoten primer je na voljo spodaj.

Konfiguracija OpenSSL#

Motor OpenSSL nastavite po priročniku za nastavitev motorja OpenSSL. (Apache httpd še ne podpira ponudnikov OpenSSL.)

Konfiguracija Httpd#

V spletno stran httpd.conf dodajte naslednje vrstice :

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 mora kazati na datoteko s potrdilom na disku.

SSLCertificateKeyFile mora biti PKCS#11 URI, ki kaže na zasebni ključ v NetHSM.

Opomba

Potrdilo morate ustvariti ločeno in ga nato naložiti v NetHSM. Če se potrdilo na disku in ključ v NetHSM ne ujemata, se httpd ne zažene.

libnethsm_pkcs11 Konfiguracija#

slots:
  - label: LocalHSM
    description: Local HSM (docker)
    url: "https://192.168.3.161:8443/api/v1"
    operator:
      username: "operator"
      password: "opPassphrase"

Če želite geslo zavarovati, ga lahko navedete v spremenljivki okolja (glejte Nastavitev) ali ga navedete v konfiguraciji httpd:

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

Primer#

Če želite eksperimentirati z danim primerom ` <https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>` __, uporabite git za kloniranje skladišča nethsm-pkcs11 in zaženite naslednje ukaze:

Opozorilo

Z zagonom skripte za generiranje izbrišete ključ webserver in ga nadomestite.

  1. Konfigurirajte NetHSM, bodisi pravi bodisi vsebnik. Za več informacij glejte priročnik za začetek. Poleg skrbniškega računa boste potrebovali tudi račun operaterja.

  2. Prenesite in namestite najnovejšo različico gonilnika nethsm-pkcs11 , ki je na voljo tukaj.

  3. Namestite pogon OpenSSL PKCS11, kot je opisano v priročniku OpenSSL Manual. Konfiguracijske datoteke vam ni treba ustvariti.

  4. Spremenljivke HOST, ADMIN_ACCOUNT in ADMIN_ACCOUNT_PWD v container/apache/generate.sh prilagodite tako, da HOST vsebuje URL in vrata vašega NetHSM, ADMIN_ACCOUNT vsebuje uporabniško ime skrbniških računov, ADMIN_ACCOUNT_PWD pa ustrezno geslo. Nadalje konfigurirajte absolutno pot motorja OpenSSL PKCS11 v OPENSSL_PKCS11_ENGINE_PATH in absolutno pot knjižnice NetHSM PKCS11 v NETHSM_PKCS11_LIBRARY_PATH.

  5. Ustvarite konfiguracijsko datoteko NetHSM PKCS11 na eni od znanih lokacij, npr. /etc/nitrokey/p11nethsm.conf. V njej mora biti konfiguriran račun operaterja in uporabljen isti primerek NetHSM, ki je bil prej naveden v skripti za generiranje.

  6. Posodobite konfiguracijo PKCS11 v container/apache/p11nethsm.conf s svojim naslovom URL NetHSMs in veljavnimi poverilnicami operaterja.

  7. Ustvarite potrdilo in ključ.

./container/apache/generate.sh
  1. Zgradite posodo.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Zaženite vsebnik.

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

Testna stran Apache bo na voljo na naslovu https://localhost:9443/. Upoštevajte, da vas bo brskalnik, upajmo, opozoril, da je certifikat spletnih strani samopodpisan.