Apache¶
È possibile configurare Apache httpd per utilizzare NetHSM tramite il motore OpenSSL che utilizza il modulo PKCS#11 di NetHSM.
Il file del certificato deve essere sul disco, ma la chiave privata può essere utilizzata dal NetHSM.
Un esempio completo è disponibile sotto.
Configurazione di OpenSSL¶
Configurare il motore OpenSSL seguendo la guida all’installazione di OpenSSL Engine (i provider OpenSSL non sono ancora supportati da Apache httpd).
Configurazione Httpd¶
Aggiungete le seguenti righe al vostro 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.
Nota
È necessario generare il certificato separatamente e poi caricarlo sul NetHSM. Se il certificato su disco e la chiave nel NetHSM non corrispondono, httpd non si avvia.
libnethsm_pkcs11 Configurazione¶
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";
Esempio¶
Se volete sperimentare l’esempio ` <https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>`__ usate git per clonare il repository nethsm-pkcs11 ed eseguite i seguenti comandi:
Avvertimento
L’esecuzione dello script generate cancella la chiave webserver e la sostituisce.
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.
Scaricare e installare l’ultima versione del driver nethsm-pkcs11 disponibile qui.
Installare il motore OpenSSL PKCS11 come descritto nel Manuale OpenSSL ` <openssl.html>`__. Non è necessario creare un file di configurazione.
Regolare le variabili
HOST,ADMIN_ACCOUNTeADMIN_ACCOUNT_PWDincontainer/apache/generate.shin modo cheHOSTcontenga l’URL e la porta del NetHSM,ADMIN_ACCOUNTcontenga il nome utente dell’account amministratore eADMIN_ACCOUNT_PWDla password corrispondente. Configurare inoltre il percorso assoluto del motore OpenSSL PKCS11 inOPENSSL_PKCS11_ENGINE_PATHe il percorso assoluto della libreria PKCS11 di NetHSM inNETHSM_PKCS11_LIBRARY_PATH.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.Aggiornare la configurazione PKCS11 in
container/apache/p11nethsm.confcon l’URL di NetHSMs e le credenziali valide dell’operatore.Generare il certificato e la chiave.
./container/apache/generate.sh
Costruire il contenitore.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Eseguire il contenitore.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
La pagina di test di Apache sarà disponibile all’indirizzo https://localhost:9443/. Si spera che il browser avverta che il certificato del sito web è autofirmato.