Apache#

Puteți configura Apache httpd pentru a utiliza NetHSM prin intermediul motorului OpenSSL, care utilizează apoi modulul PKCS#11 al NetHSM.

Fișierul de certificat trebuie să se afle pe disc, dar cheia privată poate fi utilizată din NetHSM.

Un exemplu complet este disponibil mai jos.

Configurația OpenSSL#

Configurați motorul OpenSSL urmând ghidul de configurare a motorului OpenSSL OpenSSL Engine. (Furnizorii OpenSSL nu sunt încă suportați de Apache httpd.)

Configurație Httpd#

Adăugați următoarele linii la 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>

Adresa SSLCertificateFile trebuie să indice către un fișier de certificat de pe disc.

SSLCertificateKeyFile trebuie să fie un PKCS#11 URI care să indice cheia privată din NetHSM.

Notă

Trebuie să generați certificatul separat și apoi să îl încărcați în NetHSM. Dacă certificatul de pe disc și cheia din NetHSM nu corespund, httpd nu va porni.

libnethsm_pkcs11 Configurație#

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

Pentru a securiza parola, puteți să o furnizați printr-o variabilă de mediu (consultați Setup) sau să o furnizați în configurația httpd:

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

Exemplu#

Dacă doriți să experimentați cu exemplul dat utilizați git pentru a clona depozitul nethsm-pkcs11 și rulați următoarele comenzi:

Atenționare

Rularea scriptului de generare șterge cheia webserver și o înlocuiește.

  1. Configurați un NetHSM, fie unul real, fie un container. Pentru mai multe informații, consultați ghidul get-started.

  2. Dacă NetHSM nu rulează pe localhost, va trebui să modificați URL-ul cererilor curl din container/apache/generate.sh pentru a indica NetHSM-ul.

  3. Schimbați configurația libnethsm_pkcs11 pentru a se potrivi cu NetHSM-ul dvs. în container/apache/p11nethsm.conf.

  4. Generați certificatul și cheia.

./container/apache/generate.sh
  1. Construiți containerul.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Rulați containerul.

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

Containerul va fi disponibil la https://localhost:9443/ https://localhost:9443/.