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>

The SSLCertificateFile must point to a certificate file on the disk. The SSLCertificateKeyFile should be a PKCS#11 URI pointing to the private key in the 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"

To secure the password you can provide it via an environment variable (see Passwords) or provide it in the httpd configuration:

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

Primer

Če želite eksperimentirati z danim primerom, 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. Configure a NetHSM, either a real one or a container. See the getting-started guide for more information. Besides an administrator, you are going to need an operator account.

  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. Create a NetHSM PKCS11 configuration file in one of the known locations, e.g., /etc/nitrokey/p11nethsm.conf. It must have configured an operator account and use the same NetHSM instance specified in the generate script before.

  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
    
  8. Zgradite posodo.

    docker build -f container/apache/Dockerfile . -t pkcs-httpd
    
  9. 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.