Apache#
Вы можете настроить Apache httpd на использование NetHSM через механизм OpenSSL, который затем использует PKCS#11 модуль NetHSM.
Файл сертификата должен находиться на диске, но закрытый ключ может быть использован из NetHSM.
Полный пример приведен на сайте ниже.
Конфигурация OpenSSL#
Настройте механизм OpenSSL, следуя руководству по настройке механизма OpenSSL 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.
Примечание
Сертификат необходимо сгенерировать отдельно, а затем загрузить его в 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"
Для защиты пароля можно задать его через переменную окружения (см. Setup) или указать его в конфигурации httpd:
SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";
Пример#
Если вы хотите поэкспериментировать с приведенным примером, используйте git для клонирования репозитория nethsm-pkcs11 и выполните следующие команды:
Предупреждение
Запуск скрипта generate удаляет ключ 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/.