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