Apache

Můžete nakonfigurovat Apache httpd, aby používal NetHSM prostřednictvím enginu OpenSSL, který pak používá modul PKCS#11 NetHSM.

Soubor certifikátu musí být na disku, ale soukromý klíč lze použít z NetHSM.

Úplný příklad je k dispozici na pod.

Konfigurace protokolu OpenSSL

Nastavte engine OpenSSL podle průvodce nastavením OpenSSL Engine. (Poskytovatelé OpenSSL zatím nejsou podporováni serverem Apache httpd.)

Konfigurace Httpd

Do stránky httpd.conf přidejte následující řádky :

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.

Poznámka

Certifikát je nutné vygenerovat samostatně a poté jej nahrát do NetHSM. Pokud se certifikát na disku a klíč v NetHSM neshodují, httpd se nespustí.

libnethsm_pkcs11 Konfigurace

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

Příklad

Pokud chcete experimentovat s uvedeným `příkladem<https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>`__, použijte git pro klonování repozitáře nethsm-pkcs11 a spusťte následující příkazy:

Varování

Spuštěním generovacího skriptu se odstraní klíč webserver a nahradí se.

  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. Stáhněte si a nainstalujte nejnovější verzi nethsm-pkcs11 ovladače dostupnou odtud.

  3. Nainstalujte engine OpenSSL PKCS11 podle popisu v příručce OpenSSL. Není třeba vytvářet konfigurační soubor.

  4. Upravte proměnné HOST, ADMIN_ACCOUNT a ADMIN_ACCOUNT_PWD v container/apache/generate.sh tak, aby HOST obsahovala adresu URL a port vašeho NetHSM, ADMIN_ACCOUNT obsahovala uživatelské jméno účtu správce a ADMIN_ACCOUNT_PWD odpovídající heslo. Dále nakonfigurujte absolutní cestu k enginu OpenSSL PKCS11 v OPENSSL_PKCS11_ENGINE_PATH a absolutní cestu ke knihovně 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. Aktualizujte konfiguraci PKCS11 na adrese container/apache/p11nethsm.conf pomocí adresy URL NetHSM a platných pověření operátora.

  7. Vygenerujte certifikát a klíč.

    ./container/apache/generate.sh
    
  8. Sestavte kontejner.

    docker build -f container/apache/Dockerfile . -t pkcs-httpd
    
  9. Spusťte kontejner.

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

Testovací stránka Apache bude k dispozici na adrese https://localhost:9443/. Všimněte si, že váš prohlížeč vás, doufejme, upozorní, že certifikát webových stránek je podepsán samotným uživatelem.