Apache¶
Vous pouvez configurer Apache httpd pour utiliser NetHSM via le moteur OpenSSL qui utilise alors le module PKCS#11 de NetHSM.
Le fichier de certificat doit se trouver sur le disque, mais la clé privée peut être utilisée à partir du NetHSM.
Un exemple complet est disponible à l’adresse ci-dessous.
Configuration d’OpenSSL¶
Configurez le moteur OpenSSL en suivant le guide d’installation du moteur OpenSSL. (Les fournisseurs OpenSSL ne sont pas encore pris en charge par Apache httpd).
Configuration Httpd¶
Ajoutez les lignes suivantes à votre 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.
Note
Vous devez générer le certificat séparément, puis le télécharger dans le NetHSM. Si le certificat sur le disque et la clé dans le NetHSM ne correspondent pas, httpd ne démarrera pas.
libnethsm_pkcs11 Configuration¶
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";
Exemple¶
Si vous voulez expérimenter avec l’exemple donné utilisez git pour cloner le dépôt nethsm-pkcs11 et exécutez les commandes suivantes :
Avertissement
L’exécution du script de génération supprime la clé webserver et la remplace.
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.
Téléchargez et installez la dernière version du pilote nethsm-pkcs11 disponible ici.
Installez le moteur PKCS11 d’OpenSSL comme décrit dans le manuel OpenSSL Manual. Il n’est pas nécessaire de créer un fichier de configuration.
Ajustez les variables
HOST,ADMIN_ACCOUNTetADMIN_ACCOUNT_PWDdanscontainer/apache/generate.shde telle sorte queHOSTcontienne l’URL et le port de votre NetHSM,ADMIN_ACCOUNTcontienne le nom d’utilisateur d’un compte administrateur etADMIN_ACCOUNT_PWDle mot de passe correspondant. Configurez également le chemin absolu du moteur PKCS11 d’OpenSSL dansOPENSSL_PKCS11_ENGINE_PATHet le chemin absolu de la bibliothèque PKCS11 de NetHSM dansNETHSM_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.Mettez à jour la configuration PKCS11 dans
container/apache/p11nethsm.confavec l’URL de votre NetHSMs et les informations d’identification de l’opérateur.Générer le certificat et la clé.
./container/apache/generate.sh
Construire le conteneur.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Exécuter le conteneur.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
La page de test d’Apache sera disponible à l’adresse suivante : https://localhost:9443/. Notez que votre navigateur, si tout va bien, vous avertira que le certificat du site web est auto-signé.