Nginx¶
Galite sukonfigūruoti nginx naudoti NetHSM per OpenSSL variklį, kuris naudoja NetHSM PKCS#11 modulį.
Sertifikato failas turi būti diske, tačiau privatųjį raktą galima naudoti iš NetHSM.
Visą pavyzdį galima rasti žemiau.
„OpenSSL“ konfigūracija¶
Nustatykite „OpenSSL“ variklį vadovaudamiesi OpenSSL variklio sąrankos vadovu.
„Nginx“ dar nepalaiko teikėjų.
Pastaba
Naudojant libp11 OpenSSL variklio versiją 0.4.12 arba senesnę ir NetHSM su daug raktų, pradinis „Nginx“ įkėlimas bus lėtas (daugiau nei minutė 1 tūkst. raktų). Rekomenduojama naudoti 0.4.13 ar naujesnę versiją arba sukurti variklį iš šaltinio.
„Nginx“ konfigūracija¶
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
turi nurodyti į sertifikato failą diske.
ssl_certificate_key
gali būti OpenSSL konfigūracija. Čia naudojame OpenSSL variklį su PKCS#11 moduliu ir pasirenkame privatųjį raktą su webserver
private
etikete/ID ir rakto tipu.
ssl_certificate_key "engine:pkcs11:pkcs11:object=webserver;type=private";
Pastaba
Sertifikatą reikia sukurti atskirai ir tada įkelti į NetHSM. Jei diske esantis sertifikatas ir NetHSM esantis raktas nesutampa, „nginx“ nepradės veikti.
libnethsm_pkcs11 konfigūracija¶
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
Norėdami apsaugoti slaptažodį, galite jį pateikti per aplinkos kintamąjį) arba nurodyti jį „nginx“ konfigūracijoje:
ssl_certificate_key "engine:pkcs11:pkcs11:object=webserver;type=private;pin=opPassphrase";
Pavyzdys¶
Jei norite eksperimentuoti su pateiktu pavyzdžiu, naudokite git, kad klonuotumėte nethsm-pkcs11 saugyklą ir vykdykite šias komandas:
Įspėjimas
Paleidus generavimo scenarijų ištrinamas webserver
raktas ir jis pakeičiamas nauju.
Sukonfigūruokite tikrą arba konteinerį NetHSM. Daugiau informacijos rasite pradžios vadove. Be administratoriaus, jums reikės ir operatoriaus paskyros.
Atsisiųskite ir įdiekite naujausią nethsm-pkcs11 tvarkyklės versiją iš čia.
Įdiekite OpenSSL PKCS11 variklį, kaip aprašyta OpenSSL vadove. Konfigūracijos failo kurti nereikia.
Pritaikykite kintamuosius
HOST
,ADMIN_ACCOUNT
irADMIN_ACCOUNT_PWD
container/nginx/generate.sh
taip, kadHOST
būtų jūsų NetHSM URL ir prievadas,ADMIN_ACCOUNT
būtų administratoriaus paskyros vartotojo vardas irADMIN_ACCOUNT_PWD
atitinkamas slaptažodis. Toliau konfigūruokite absoliutų OpenSSL PKCS11 variklio keliąOPENSSL_PKCS11_ENGINE_PATH
ir absoliutų NetHSM PKCS11 bibliotekos keliąNETHSM_PKCS11_LIBRARY_PATH
.Sukurkite NetHSM PKCS11 konfigūracijos failą vienoje iš žinomų vietų, pvz.,
/etc/nitrokey/p11nethsm.conf
. Jame turi būti sukonfigūruota operatoriaus paskyra ir naudojamas tas pats NetHSM egzempliorius, kuris nurodytas prieš tai generavimo scenarijuje.Atnaujinkite PKCS11 konfigūraciją adresu
container/nginx/p11nethsm.conf
su savo NetHSMs URL ir galiojančiais operatoriaus įgaliojimais.Sukurkite sertifikatą ir raktą.
./container/nginx/generate.sh
Pastatykite konteinerį.
docker build -f container/nginx/Dockerfile . -t pkcs-nginx
Paleiskite konteinerį.
docker run -p 9443:443 -p 9080:80 pkcs-nginx
NGINX bandomąjį puslapį bus galima rasti adresu https://localhost:9443/. Atkreipkite dėmesį, kad jūsų naršyklė, tikėkimės, įspės jus, kad svetainių sertifikatas yra pasirašytas paties naudotojo.