Nginx¶
Jūs varat konfigurēt nginx, lai izmantotu NetHSM, izmantojot OpenSSL dzinēju, kas pēc tam izmanto NetHSM PKCS#11 moduli.
Sertifikāta failam jābūt diskā, bet privāto atslēgu var izmantot no NetHSM.
Pilns piemērs ir pieejams zemāk.
OpenSSL konfigurācija¶
Iestatiet OpenSSL dzinēju, sekojot OpenSSL dzinēja iestatīšanas rokasgrāmatai.
Nginx vēl neatbalsta pakalpojumu sniedzējus.
Piezīme
Izmantojot libp11 OpenSSL dzinēja versiju 0.4.12 vai vecāku un NetHSM ar daudz atslēgu, Nginx sākotnējā ielāde būs lēna (vairāk nekā minūti 1 tūkst. atslēgu). Ieteicams izmantot 0.4.13 vai jaunāku versiju vai arī izveidot dzinēju no avota.
Nginx konfigurācija¶
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 jānorāda uz sertifikāta failu diskā.
ssl_certificate_key var būt OpenSSL konfigurācija. Šeit mēs izmantojam OpenSSL dzinēju ar PKCS#11 moduli un izvēlamies privāto atslēgu ar marķējumu/ID webserver un atslēgas tipu private.
ssl_certificate_key "engine:pkcs11:pkcs11:object=webserver;type=private";
Piezīme
Sertifikāts ir jāģenerē atsevišķi un pēc tam jāielādē NetHSM. Ja sertifikāts diskā un atslēga NetHSM nesakrīt, nginx nesāksies.
libnethsm_pkcs11 konfigurācija¶
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
Lai nodrošinātu paroles drošību, varat to norādīt, izmantojot vides mainīgo), vai norādīt to nginx konfigurācijā:
ssl_certificate_key "engine:pkcs11:pkcs11:object=webserver;type=private;pin=opPassphrase";
Piemērs¶
Ja vēlaties eksperimentēt ar doto piemēru, izmantojiet git, lai klonētu nethsm-pkcs11 repozitoriju un izpildiet šādas komandas:
Brīdinājums
Palaižot ģenerēšanas skriptu, tiek dzēsta webserver atslēga un tā tiek aizstāta.
Konfigurējiet NetHSM - reālu vai konteineru. Lai iegūtu vairāk informācijas, skatiet sākumposma rokasgrāmatu. Bez administratora jums būs nepieciešams arī operatora konts.
Lejupielādējiet un instalējiet jaunāko versiju nethsm-pkcs11 draiveris draiveris ir pieejams šeit.
Instalējiet OpenSSL PKCS11 dzinēju, kā aprakstīts OpenSSL rokasgrāmatā. Jums nav nepieciešams izveidot konfigurācijas failu.
Pielāgojiet mainīgos
HOST,ADMIN_ACCOUNTunADMIN_ACCOUNT_PWDcontainer/nginx/generate.shtā, laiHOSTsaturētu jūsu NetHSMs URL un portu,ADMIN_ACCOUNTsaturētu administratora konta lietotājvārdu unADMIN_ACCOUNT_PWDatbilstošo paroli. Tālāk konfigurējiet OpenSSL PKCS11 dzinēja absolūto ceļuOPENSSL_PKCS11_ENGINE_PATHun NetHSM PKCS11 bibliotēkas absolūto ceļuNETHSM_PKCS11_LIBRARY_PATH.Izveidojiet NetHSM PKCS11 konfigurācijas failu vienā no zināmajām vietām, piemēram,
/etc/nitrokey/p11nethsm.conf. Tajā jābūt konfigurētam operatora kontam un jāizmanto tas pats NetHSM gadījums, kas iepriekš norādīts ģenerēšanas skripta ģenerēšanā.Atjauniniet PKCS11 konfigurāciju vietnē
container/nginx/p11nethsm.confar savu NetHSMs URL un derīgiem operatora akreditācijas datiem.Sertifikāta un atslēgas ģenerēšana.
./container/nginx/generate.shIzveidojiet konteineru.
docker build -f container/nginx/Dockerfile . -t pkcs-nginxPalaist konteineru.
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.