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 (katso Setup) 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.

  1. Määritä NetHSM, joko oikea tai kontti. Katso lisätietoja osoitteesta getting-started guide.

  2. Jos NetHSM ei toimi localhostissa, sinun on muutettava curl-pyyntöjen URL-osoite osoitteessa container/nginx/generate.sh osoittamaan NetHSM:ääsi.

  3. Muuta libnethsm_pkcs11-konfiguraatio vastaamaan NetHSM:ääsi osoitteessa container/ejbca/p11nethsm.conf.

  4. Luo varmenne ja avain.

./container/nginx/generate.sh
  1. Rakenna säiliö.

docker build -f container/nginx/Dockerfile . -t pkcs-nginx
  1. Käynnistä säiliö.

docker run -p 9443:443 -p 9080:80 pkcs-nginx

Kontti on saatavilla osoitteessa https://localhost:9443/.