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 egy környezeti változóval (lásd Setup) 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.

  1. 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.

  2. Töltse le és telepítse a nethsm-pkcs11 illesztőprogram legújabb verzióját innen:.

  3. Telepítse az OpenSSL PKCS11 motorját a OpenSSL kézikönyvben leírtak szerint. Nem kell konfigurációs fájlt létrehoznia.

  4. Állítsa be a HOST, ADMIN_ACCOUNT és ADMIN_ACCOUNT_PWD változókat a container/nginx/generate.sh-ban úgy, hogy a HOST tartalmazza a NetHSM URL-jét és portját, a ADMIN_ACCOUNT tartalmazza a rendszergazdai fiók felhasználónevét és a ADMIN_ACCOUNT_PWD a megfelelő jelszót. Továbbá konfigurálja az OpenSSL PKCS11 motor abszolút elérési útvonalát a OPENSSL_PKCS11_ENGINE_PATH és a NetHSM PKCS11 könyvtár abszolút elérési útvonalát a NETHSM_PKCS11_LIBRARY_PATH alatt.

  5. 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.

  6. 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.

  7. Generálja a tanúsítványt és a kulcsot.

./container/nginx/generate.sh
  1. Építse meg a konténert.

docker build -f container/nginx/Dockerfile . -t pkcs-nginx
  1. 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ú.