Nginx#
Voit määrittää nginx käyttämään NetHSM:ää OpenSSL-moottorin kautta, joka käyttää NetHSM:n PKCS#11-moduulia.
Varmentetiedoston on oltava levyllä, mutta yksityistä avainta voidaan käyttää NetHSM:stä.
Täydellinen esimerkki on saatavilla alla.
OpenSSL-konfiguraatio#
Määritä OpenSSL-moottori noudattamalla OpenSSL Engine setup guide.
Nginx ei vielä tue palveluntarjoajia.
Muista
Jos käytät libp11 OpenSSL-moottorin versiota 0.4.12 tai vanhempaa ja NetHSM:ää, jossa on paljon avaimia, Nginxin alkulataus on hidas (yli minuutti tuhannelle avaimelle). On suositeltavaa käyttää versiota 0.4.13 tai uudempaa tai rakentaa moottori osoitteesta source.
Nginxin konfigurointi#
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;
}
}
Osoitteen ssl_certificate
on osoitettava levyllä olevaan varmennetiedostoon.
ssl_certificate_key
voi olla OpenSSL-konfiguraatio. Tässä käytämme OpenSSL-moottoria PKCS#11-moduulin kanssa ja valitsemme yksityisen avaimen, jolla on tunniste/tunnus webserver
ja avaintyyppi private
.
”ssl_certificate_key ”engine:pkcs11:pkcs11:object=webserver;type=private”;
Muista
Varmenne on luotava erikseen ja ladattava sitten NetHSM:ään. Jos levyllä oleva varmenne ja NetHSM:ssä oleva avain eivät täsmää, nginx ei käynnisty.
libnethsm_pkcs11 Konfigurointi#
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
Voit suojata salasanan antamalla sen ympäristömuuttujalla ` <pkcs11-setup.html#passwords>`__) tai antamalla sen nginxin asetuksissa:
ssl_certificate_key "engine:pkcs11:pkcs11:object=webserver;type=private;pin=opPassphrase";
Esimerkki#
Jos haluat kokeilla annettua esimerkkiä käytä git-ohjelmaa kloonataksesi nethsm-pkcs11-arkiston ja suorita seuraavat komennot:
Varoitus
Generointiskriptin suorittaminen poistaa avaimen webserver
ja korvaa sen.
Määritä NetHSM, joko oikea tai kontti. Katso lisätietoja osoitteesta getting-started guide. Järjestelmänvalvojan lisäksi tarvitset operaattoritilin.
Lataa ja asenna uusin versio nethsm-pkcs11 -ajurista , joka on saatavilla täältä.
Asenna OpenSSL PKCS11 -moottori OpenSSL Manual. Sinun ei tarvitse luoda asetustiedostoa.
Säädä muuttujat
HOST
,ADMIN_ACCOUNT
jaADMIN_ACCOUNT_PWD
muuttujiincontainer/nginx/generate.sh
siten, ettäHOST
sisältää NetHSM:n URL-osoitteen ja portin,ADMIN_ACCOUNT
sisältää järjestelmänvalvojan käyttäjätunnuksen jaADMIN_ACCOUNT_PWD
vastaavan salasanan. Määritä lisäksi OpenSSL PKCS11 -moottorin absoluuttinen polku osoitteessaOPENSSL_PKCS11_ENGINE_PATH
ja NetHSM PKCS11 -kirjaston absoluuttinen polku osoitteessaNETHSM_PKCS11_LIBRARY_PATH
.Luo NetHSM PKCS11 -määritystiedosto johonkin tunnetuista sijainneista, esim.
/etc/nitrokey/p11nethsm.conf
. Siihen on määritettävä operaattoritili ja siinä on käytettävä samaa NetHSM-instanssia, joka on määritetty generate-skriptissä aiemmin.Päivitä PKCS11-konfiguraatio osoitteessa
container/nginx/p11nethsm.conf
NetHSM:n URL-osoitteella ja voimassa olevilla käyttäjän tunnuksilla.Luo varmenne ja avain.
./container/nginx/generate.sh
Rakenna säiliö.
docker build -f container/nginx/Dockerfile . -t pkcs-nginx
Käynnistä säiliö.
docker run -p 9443:443 -p 9080:80 pkcs-nginx
NGINX-testisivu on saatavilla osoitteessa https://localhost:9443/. Huomaa, että selaimesi toivottavasti varoittaa sinua siitä, että verkkosivujen varmenne on itse allekirjoitettu.