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 и заменяет его.

  1. Настройте NetHSM, либо реальный, либо контейнер. Дополнительную информацию см. в руководстве по началу работы ` <getting-started>` __.

  2. Если ваш NetHSM работает не на localhost, то вам необходимо изменить URL-адрес запросов curl в container/apache/generate.sh, чтобы он указывал на ваш NetHSM.

  3. Измените конфигурацию libnethsm_pkcs11 в соответствии с вашим NetHSM в разделе container/apache/p11nethsm.conf.

  4. Сгенерируйте сертификат и ключ.

./container/apache/generate.sh
  1. Постройте контейнер.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Запустите контейнер.

docker run -p 9443:443 -p 9080:80 pkcs-httpd

Контейнер будет доступен по адресу https://localhost:9443/.