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.
Konfigureerige NetHSM, kas tõeline või konteiner. Lisateavet leiate getting-started guide. Lisaks administraatorile on vaja ka operaatorikontot.
Lae alla ja paigalda uusim versioon nethsm-pkcs11 draiverist , mis on saadaval siit.
Paigaldage OpenSSL PKCS11 mootor, nagu on kirjeldatud OpenSSL Manual. Konfigureerimisfaili ei ole vaja luua.
Kohandage muutujaid
HOST,ADMIN_ACCOUNTjaADMIN_ACCOUNT_PWDcontainer/nginx/generate.shnii, etHOSTsisaldab teie NetHSM-i URL-i ja porti,ADMIN_ACCOUNTsisaldab administraatori kasutajanime jaADMIN_ACCOUNT_PWDvastavat parooli. Lisaks konfigureerige OpenSSL PKCS11 mootori absoluutne tee aadressilOPENSSL_PKCS11_ENGINE_PATHja NetHSM PKCS11 raamatukogu absoluutne tee aadressilNETHSM_PKCS11_LIBRARY_PATH.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.Uuendage PKCS11 konfiguratsiooni aadressil
container/nginx/p11nethsm.confoma NetHSM-i URL-i ja kehtivate operaatorite volitustega.Sertifikaadi ja võtme genereerimine.
./container/nginx/generate.shEhitage konteiner.
docker build -f container/nginx/Dockerfile . -t pkcs-nginxKäivitage konteiner.
docker run -p 9443:443 -p 9080:80 pkcs-nginx
The NGINX test page will be available at https://localhost:9443/. Note that your browser, will warn you that the websites certificate is self-signed.