Apache#
Можете да конфигурирате Apache httpd да използва NetHSM чрез енджина OpenSSL, който след това използва модула PKCS#11 на NetHSM.
Файлът със сертификата трябва да е на диска, но частният ключ може да се използва от NetHSM.
Пълен пример е достъпен на адрес по-долу.
Конфигурация на OpenSSL#
Настройте OpenSSL енджина, като следвате ръководството за настройка на OpenSSL енджина. (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"
За да защитите паролата, можете да я предоставите чрез променлива на средата (вж. Passwords) или да я предоставите в конфигурацията на 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-pkcs11 драйвера , достъпна от тук.
Инсталирайте енджина на OpenSSL PKCS11, както е описано в Ръководството за OpenSSL. Не е необходимо да създавате конфигурационен файл.
Настройте променливите
HOST
,ADMIN_ACCOUNT
иADMIN_ACCOUNT_PWD
вcontainer/apache/generate.sh
така, чеHOST
да съдържа URL адреса и порта на вашия NetHSMs,ADMIN_ACCOUNT
да съдържа потребителското име на администраторския акаунт иADMIN_ACCOUNT_PWD
съответната парола. Освен това конфигурирайте абсолютния път на OpenSSL PKCS11 енджина вOPENSSL_PKCS11_ENGINE_PATH
и абсолютния път на NetHSM PKCS11 библиотеката вNETHSM_PKCS11_LIBRARY_PATH
.Създайте конфигурационен файл NetHSM PKCS11 в едно от известните места, например
/etc/nitrokey/p11nethsm.conf
. В него трябва да е конфигуриран операторски акаунт и да се използва същата инстанция на NetHSM, посочена преди това в скрипта за генериране.Актуализирайте конфигурацията PKCS11 в
container/apache/p11nethsm.conf
с вашия NetHSMs URL адрес и валидни данни за оператора.Генерирайте сертификата и ключа.
./container/apache/generate.sh
Изградете контейнера.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Стартирайте контейнера.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
Тестовата страница на Apache ще бъде достъпна на адрес https://localhost:9443/. Обърнете внимание, че вашият браузър, надяваме се, ще ви предупреди, че сертификатът на уебсайтовете е самоподписан.