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_ACCOUNT
jaADMIN_ACCOUNT_PWD
container/nginx/generate.sh
nii, etHOST
sisaldab teie NetHSM-i URL-i ja porti,ADMIN_ACCOUNT
sisaldab administraatori kasutajanime jaADMIN_ACCOUNT_PWD
vastavat parooli. Lisaks konfigureerige OpenSSL PKCS11 mootori absoluutne tee aadressilOPENSSL_PKCS11_ENGINE_PATH
ja 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.conf
oma NetHSM-i URL-i ja kehtivate operaatorite volitustega.Sertifikaadi ja võtme genereerimine.
./container/nginx/generate.sh
Ehitage konteiner.
docker build -f container/nginx/Dockerfile . -t pkcs-nginx
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.