Apache

Du kan konfigurere Apache httpd til at bruge NetHSM via OpenSSL-motoren, som så bruger NetHSM’s PKCS#11-modul.

Certifikatfilen skal være på disken, men den private nøgle kan bruges fra NetHSM.

Et komplet eksempel er tilgængeligt nedenfor.

OpenSSL-konfiguration

Opsæt OpenSSL-motoren ved at følge OpenSSL Engine setup guide. (OpenSSL Providers er endnu ikke understøttet af Apache httpd).

Httpd-konfiguration

Tilføj følgende linjer til din 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>

SSLCertificateFile skal pege på en certifikatfil på disken.

SSLCertificateKeyFile skal være en PKCS#11 URI, der peger på den private nøgle i NetHSM.

Bemærk

Du skal generere certifikatet separat og derefter uploade det til NetHSM. Hvis certifikatet på disken og nøglen i NetHSM ikke stemmer overens, vil httpd ikke starte.

libnethsm_pkcs11 Konfiguration

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

For at sikre adgangskoden kan du angive den via en miljøvariabel (se Adgangskoder) eller angive den i httpd-konfigurationen:

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

Eksempel

Hvis du vil eksperimentere med det givne eksempel, skal du bruge git til at klone nethsm-pkcs11 repository og køre følgende kommandoer:

Advarsel

Når du kører genereringsscriptet, slettes nøglen webserver, og den erstattes.

  1. Konfigurer en NetHSM, enten en rigtig eller en container. Se getting-started guide for flere oplysninger. Udover en administrator skal du også bruge en operatørkonto.

  2. Download og installer den nyeste version af nethsm-pkcs11-driveren , der er tilgængelig her.

  3. Installer OpenSSL PKCS11-motoren som beskrevet i OpenSSL Manual. Du behøver ikke at oprette en konfigurationsfil.

  4. Juster variablerne HOST, ADMIN_ACCOUNT og ADMIN_ACCOUNT_PWD i container/apache/generate.sh, så HOST indeholder din NetHSMs URL og port, ADMIN_ACCOUNT indeholder en administratorkontos brugernavn og ADMIN_ACCOUNT_PWD den tilsvarende adgangskode. Konfigurer desuden den absolutte sti til OpenSSL PKCS11-motoren i OPENSSL_PKCS11_ENGINE_PATH og den absolutte sti til NetHSM PKCS11-biblioteket i NETHSM_PKCS11_LIBRARY_PATH.

  5. Opret en NetHSM PKCS11-konfigurationsfil på en af de kendte placeringer, f.eks. /etc/nitrokey/p11nethsm.conf. Den skal have konfigureret en operatørkonto og bruge den samme NetHSM-instans, som er angivet i genereringsscriptet før.

  6. Opdater PKCS11-konfigurationen i container/apache/p11nethsm.conf med din NetHSMs URL og gyldige operatørlegitimationsoplysninger.

  7. Generer certifikatet og nøglen.

./container/apache/generate.sh
  1. Byg beholderen.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Kør containeren.

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

Apache-testsiden vil være tilgængelig på https://localhost:9443/. Bemærk, at din browser forhåbentlig vil advare dig om, at hjemmesidens certifikat er selvsigneret.