Nginx¶
A nginx úgy konfigurálható, hogy az OpenSSL motoron keresztül használja a NetHSM-et, amely ezután a NetHSM PKCS#11 modulját használja.
A tanúsítványfájlnak a lemezen kell lennie, de a privát kulcs a NetHSM-ről is használható.
Egy teljes példa elérhető a címen:.
OpenSSL konfiguráció¶
Állítsa be az OpenSSL-motort a OpenSSL Engine setup guide.
A szolgáltatókat az Nginx még nem támogatja.
Megjegyzés
A libp11 OpenSSL motor 0.4.12-es vagy régebbi verziójának és egy sok kulcsot tartalmazó NetHSM-nek a használata lassúvá teszi az Nginx kezdeti betöltését (több mint egy perc 1 ezer kulcs esetén). Ajánlott a 0.4.13-as vagy újabb verzió használata, vagy a motor építése a forrásból.
Nginx konfiguráció¶
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;
}
}
A ssl_certificate
egy lemezen található tanúsítványfájlra kell mutatnia.
A ssl_certificate_key
lehet egy OpenSSL konfiguráció. Itt az OpenSSL motort használjuk a PKCS#11 modullal, és kiválasztjuk a privát kulcsot a webserver
címkével/ID-vel és a private
kulcstípussal.
„ssl_certificate_key „engine:pkcs11:pkcs11:object=webserver;type=private”;
Megjegyzés
A tanúsítványt külön kell létrehoznia, majd feltöltenie a NetHSM-be. Ha a lemezen lévő tanúsítvány és a NetHSM-ben lévő kulcs nem egyezik, az nginx nem fog elindulni.
libnethsm_pkcs11 Konfiguráció¶
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
A jelszó biztonságossá tételéhez megadhatja azt a környezeti változóval), vagy megadhatja az nginx konfigurációjában:
ssl_certificate_key "engine:pkcs11:pkcs11:object=webserver;type=private;pin=opPassphrase";
Példa¶
Ha kísérletezni akarsz a adott példával használd a git-et a nethsm-pkcs11 repository klónozásához és futtasd a következő parancsokat:
Figyelem
A generáló szkript futtatása törli a webserver
kulcsot és kicseréli azt.
Konfiguráljon egy NetHSM-et, akár egy valódi, akár egy konténert. További információkért lásd a getting-started guide. A rendszergazdán kívül szükséged lesz egy operátori fiókra is.
Töltse le és telepítse a nethsm-pkcs11 illesztőprogram legújabb verzióját innen:.
Telepítse az OpenSSL PKCS11 motorját a OpenSSL kézikönyvben leírtak szerint. Nem kell konfigurációs fájlt létrehoznia.
Állítsa be a
HOST
,ADMIN_ACCOUNT
ésADMIN_ACCOUNT_PWD
változókat acontainer/nginx/generate.sh
-ban úgy, hogy aHOST
tartalmazza a NetHSM URL-jét és portját, aADMIN_ACCOUNT
tartalmazza a rendszergazdai fiók felhasználónevét és aADMIN_ACCOUNT_PWD
a megfelelő jelszót. Továbbá konfigurálja az OpenSSL PKCS11 motor abszolút elérési útvonalát aOPENSSL_PKCS11_ENGINE_PATH
és a NetHSM PKCS11 könyvtár abszolút elérési útvonalát aNETHSM_PKCS11_LIBRARY_PATH
alatt.Hozzon létre egy NetHSM PKCS11 konfigurációs fájlt a ismert helyek egyikén, pl.
/etc/nitrokey/p11nethsm.conf
. Be kell konfigurálnia egy operátori fiókot, és ugyanazt a NetHSM-példányt kell használnia, amelyet korábban a generáló szkriptben megadott.Frissítse a PKCS11 konfigurációt a
container/nginx/p11nethsm.conf
oldalon a NetHSM URL-címével és az érvényes üzemeltetői hitelesítő adatokkal.Generálja a tanúsítványt és a kulcsot.
./container/nginx/generate.sh
Építse meg a konténert.
docker build -f container/nginx/Dockerfile . -t pkcs-nginx
Futtassa a konténert.
docker run -p 9443:443 -p 9080:80 pkcs-nginx
Az NGINX tesztoldal a https://localhost:9443/ címen lesz elérhető. Vegye figyelembe, hogy a böngészője remélhetőleg figyelmeztetni fogja, hogy a weboldalak tanúsítványa saját aláírású.