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, o puteți furniza prin intermediul unei variabile de mediu (consultați Parole) sau o puteți furniza î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.
Configurați un NetHSM, fie unul real, fie un container. Pentru mai multe informații, consultați ghidul get-started. Pe lângă un administrator, veți avea nevoie de un cont de operator.
Descărcați și instalați cea mai recentă versiune de nethsm-pkcs11 driver disponibil de aici.
Instalați motorul OpenSSL PKCS11 așa cum este descris în OpenSSL Manual. Nu este necesar să creați un fișier de configurare.
Ajustați variabilele
HOST
,ADMIN_ACCOUNT
șiADMIN_ACCOUNT_PWD
încontainer/apache/generate.sh
astfel încâtHOST
să conțină URL-ul și portul NetHSMs,ADMIN_ACCOUNT
să conțină numele de utilizator al contului de administrator șiADMIN_ACCOUNT_PWD
parola corespunzătoare. În continuare, configurați calea absolută a motorului OpenSSL PKCS11 înOPENSSL_PKCS11_ENGINE_PATH
și calea absolută a bibliotecii PKCS11 NetHSM înNETHSM_PKCS11_LIBRARY_PATH
.Creați un fișier de configurare NetHSM PKCS11 într-una din locațiile cunoscute ` <pkcs11-setup.html#configuration>`__, de exemplu,
/etc/nitrokey/p11nethsm.conf
. Acesta trebuie să aibă configurat un cont de operator și să utilizeze aceeași instanță NetHSM specificată în scriptul de generare anterior.Actualizați configurația PKCS11 din
container/apache/p11nethsm.conf
cu URL-ul NetHSMs și acreditările valide ale operatorului.Generați certificatul și cheia.
./container/apache/generate.sh
Construiți containerul.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Rulați containerul.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
Pagina de test Apache va fi disponibilă la https://localhost:9443/ https://localhost:9443/. Rețineți că browserul dvs. vă va avertiza, sperăm, că certificatul site-ului web este autofirmat.