Nginx#

Saate seadistada nginx kasutama NetHSM-i OpenSSL-mootori kaudu, mis kasutab siis NetHSM-i PKCS#11-moodulit.

Sertifikaadifail peab olema kettal, kuid privaatvõtit saab kasutada NetHSMist.

Täielik näide on kättesaadav allpool.

OpenSSL konfiguratsioon#

Seadistage OpenSSL mootor, järgides OpenSSL mootori seadistamise juhendit.

Nginx ei toeta veel teenusepakkujaid.

Märkus

Kasutades libp11 OpenSSL mootori versiooni 0.4.12 või vanemat ja NetHSM-i, millel on palju võtmeid, muutub Nginxi esialgne laadimine aeglaseks (üle minuti 1 tuhande võtme puhul). Soovitatav on kasutada versiooni 0.4.13 või uuemat või ehitada mootor lähtekoodist.

Nginxi konfiguratsioon#

ssl_engine pkcs11;

server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /certs/certificate.pem;

    ssl_certificate_key "engine:pkcs11:pkcs11:object=webserver;type=private";

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  10s;
    ssl_session_tickets off;

    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers  off;

    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

ssl_certificate peab osutama kettal asuvale sertifikaadifailile.

ssl_certificate_key võib olla OpenSSL-i konfiguratsioon. Siinkohal kasutame OpenSSL mootorit koos PKCS#11 mooduliga ja valime privaatvõtme, mille märgistus/ID on webserver ja võtmetüüp private.

„ssl_certificate_key „engine:pkcs11:pkcs11:object=webserver;type=private“;

Märkus

Te peate sertifikaadi eraldi genereerima ja seejärel selle NetHSMi üles laadima. Kui kettal olev sertifikaat ja NetHSMis olev võti ei ühti, ei käivitu nginx.

libnethsm_pkcs11 Konfiguratsioon#

slots:
  - label: LocalHSM
    description: Local HSM (docker)
    url: "https://192.168.3.161:8443/api/v1"
    operator:
      username: "operator"
      password: "opPassphrase"

Salasõna kindlustamiseks võite selle anda keskkonnamuutuja kaudu (vt Setup) või anda selle nginxi konfiguratsioonis:

ssl_certificate_key "engine:pkcs11:pkcs11:object=webserver;type=private;pin=opPassphrase";

Näide#

Kui soovite eksperimenteerida antud näitega kasutage git’i, et kloonida nethsm-pkcs11 repositooriumi ja käivitage järgmised käsud:

Hoiatus

Genereerimise skripti käivitamine kustutab võtme webserver ja asendab selle.

  1. Konfigureerige NetHSM, kas tõeline või konteiner. Lisateavet leiate getting-started guide.

  2. Kui teie NetHSM ei tööta localhostis, peate muutma curl-päringute URL-i aadressil container/nginx/generate.sh nii, et see viitaks teie NetHSMile.

  3. Muutke libnethsm_pkcs11 konfiguratsiooni vastavalt teie NetHSMile aadressil container/ejbca/p11nethsm.conf.

  4. Sertifikaadi ja võtme genereerimine.

./container/nginx/generate.sh
  1. Ehitage konteiner.

docker build -f container/nginx/Dockerfile . -t pkcs-nginx
  1. Käivitage konteiner.

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

Konteiner on saadaval aadressil https://localhost:9443/.