Apache#
Можете да конфигурирате Apache httpd да използва NetHSM чрез енджина OpenSSL, който след това използва модула PKCS#11 на NetHSM.
Файлът със сертификата трябва да е на диска, но частният ключ може да се използва от NetHSM.
Пълен пример е достъпен на адрес по-долу.
Конфигурация на OpenSSL#
Настройте OpenSSL енджина, като следвате ръководството за настройка на OpenSSL енджина ` <openssl.html#engine>` __. (OpenSSL доставчиците все още не се поддържат от Apache httpd.)
Конфигурация на Httpd#
Добавете следните редове към вашия 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>
SSLCertificateFile
трябва да сочи към файл със сертификат на диска.
SSLCertificateKeyFile
трябва да бъде PKCS#11 URI, сочещ към частния ключ в NetHSM.
Note
Трябва да генерирате сертификата отделно и след това да го качите в NetHSM. Ако сертификатът на диска и ключът в NetHSM не съвпадат, httpd няма да се стартира.
Конфигурация на libnethsm_pkcs11#
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
За да защитите паролата, можете да я предоставите чрез променлива на средата (вж. Настройка) или да я предоставите в конфигурацията на httpd:
SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";
Пример:#
Ако искате да експериментирате с дадения пример ` <https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>` __, използвайте git, за да клонирате хранилището nethsm-pkcs11 и изпълнете следните команди:
Warning
Изпълнението на скрипта за генериране изтрива ключа webserver
и го заменя.
Конфигуриране на NetHSM - истински или контейнер. За повече информация вижте ръководството getting-started.
Ако вашият NetHSM не работи на localhost, ще трябва да промените URL адреса на curl заявките в
container/apache/generate.sh
, за да сочи към вашия NetHSM.Променете конфигурацията на libnethsm_pkcs11, за да съответства на вашия NetHSM в
container/apache/p11nethsm.conf
.Генерирайте сертификата и ключа.
./container/apache/generate.sh
Изградете контейнера.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Стартирайте контейнера.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
Контейнерът ще бъде достъпен на адрес https://localhost:9443/.