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/. Обърнете внимание, че вашият браузър, надяваме се, ще ви предупреди, че сертификатът на уебсайтовете е самоподписан.