Apache

Du kan konfigurera Apache httpd att använda NetHSM via OpenSSL-motorn som sedan använder NetHSM:s PKCS#11-modul.

Certifikatfilen måste finnas på hårddisken men den privata nyckeln kan användas från NetHSM.

Ett fullständigt exempel finns tillgängligt nedan.

Konfiguration av OpenSSL

Konfigurera OpenSSL-motorn genom att följa OpenSSL Engine setup guide. (OpenSSL Providers stöds ännu inte av Apache httpd.)

Httpd-konfiguration

Lägg till följande rader i 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>

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.

Observera

Du måste generera certifikatet separat och sedan ladda upp det till NetHSM. Om certifikatet på disken och nyckeln i NetHSM inte matchar varandra startar inte httpd.

libnethsm_pkcs11 Konfiguration

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";

Exempel

Om du vill experimentera med exemplet ` <https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>`__ använder du git för att klona nethsm-pkcs11 repository och kör följande kommandon:

Varning

När genereringsskriptet körs raderas nyckeln webserver och ersätts med en ny.

  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. Ladda ner och installera den senaste versionen av drivrutinen nethsm-pkcs11 som finns tillgänglig här.

  3. Installera OpenSSL PKCS11-motorn enligt beskrivningen i OpenSSL Manual. Du behöver inte skapa någon konfigurationsfil.

  4. Justera variablerna HOST, ADMIN_ACCOUNT och ADMIN_ACCOUNT_PWD i container/apache/generate.sh så att HOST innehåller din NetHSMs URL och port, ADMIN_ACCOUNT innehåller ett administratörskontos användarnamn och ADMIN_ACCOUNT_PWD motsvarande lösenord. Konfigurera vidare den absoluta sökvägen för OpenSSL PKCS11-motorn i OPENSSL_PKCS11_ENGINE_PATH och den absoluta sökvägen för NetHSM PKCS11-biblioteket i 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. Uppdatera PKCS11-konfigurationen i container/apache/p11nethsm.conf med din NetHSMs-URL och giltiga operatörsautentiseringsuppgifter.

  7. Generera certifikat och nyckel.

    ./container/apache/generate.sh
    
  8. Bygg upp behållaren.

    docker build -f container/apache/Dockerfile . -t pkcs-httpd
    
  9. Kör containern.

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

Testsidan för Apache kommer att finnas tillgänglig på https://localhost:9443/. Observera att din webbläsare, förhoppningsvis, kommer att varna dig för att webbplatsens certifikat är självsignerat.