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

  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/.