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. Lisaks administraatorile on vaja ka operaatorikontot.

  2. Lae alla ja paigalda uusim versioon nethsm-pkcs11 draiverist , mis on saadaval siit.

  3. Paigaldage OpenSSL PKCS11 mootor, nagu on kirjeldatud OpenSSL Manual. Konfigureerimisfaili ei ole vaja luua.

  4. Kohandage muutujaid HOST, ADMIN_ACCOUNT ja ADMIN_ACCOUNT_PWD container/nginx/generate.sh nii, et HOST sisaldab teie NetHSM-i URL-i ja porti, ADMIN_ACCOUNT sisaldab administraatori kasutajanime ja ADMIN_ACCOUNT_PWD vastavat parooli. Lisaks konfigureerige OpenSSL PKCS11 mootori absoluutne tee aadressil OPENSSL_PKCS11_ENGINE_PATH ja NetHSM PKCS11 raamatukogu absoluutne tee aadressil NETHSM_PKCS11_LIBRARY_PATH.

  5. Looge NetHSM PKCS11 konfiguratsioonifail ühes tuntud asukohas, nt /etc/nitrokey/p11nethsm.conf. See peab olema konfigureeritud operaatorikonto ja kasutama sama NetHSMi instantsi, mis on eelnevalt generate scriptis määratud.

  6. Uuendage PKCS11 konfiguratsiooni aadressil container/nginx/p11nethsm.conf oma NetHSM-i URL-i ja kehtivate operaatorite volitustega.

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

NGINXi testleht on kättesaadav aadressil https://localhost:9443/. Pange tähele, et teie veebilehitseja hoiatab teid loodetavasti, et veebilehtede sertifikaat on isesigneeritud.