Apache

Galite sukonfigūruoti Apache httpd 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. (OpenSSL teikėjai dar nepalaikomi „Apache httpd“.)

Httpd konfigūracija

Į httpd.conf pridėkite šias eilutes:

Listen 443
#...
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
#...

<VirtualHost *:443>
    DocumentRoot /usr/local/apache2/htdocs
    SSLEngine on
    SSLCertificateFile /certs/certificate.pem
    SSLCertificateKeyFile "pkcs11:object=webserver"
    ErrorLog /tmp/a-error.log
    CustomLog /tmp/a-access.log combined
</VirtualHost>

SSLCertificateFile turi nurodyti į sertifikato failą diske.

SSLCertificateKeyFile turėtų būti PKCS#11 URI, nurodantis į privatų raktą, esantį NetHSM.

Pastaba

Sertifikatą reikia sukurti atskirai ir tada įkelti į NetHSM. Jei diske esantis sertifikatas ir NetHSM esantis raktas nesutampa, httpd neįsijungs.

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į (žr. Slaptažodžiai) arba nurodyti jį httpd konfigūracijoje:

SSLCertificateKeyFile "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.

  1. Sukonfigūruokite tikrą arba konteinerį NetHSM. Daugiau informacijos rasite pradžios vadove. Be administratoriaus, jums reikės ir operatoriaus paskyros.

  2. Atsisiųskite ir įdiekite naujausią nethsm-pkcs11 tvarkyklės versiją iš čia.

  3. Įdiekite OpenSSL PKCS11 variklį, kaip aprašyta OpenSSL vadove. Konfigūracijos failo kurti nereikia.

  4. Pritaikykite kintamuosius HOST, ADMIN_ACCOUNT ir ADMIN_ACCOUNT_PWD container/apache/generate.sh taip, kad HOST būtų jūsų NetHSM URL ir prievadas, ADMIN_ACCOUNT būtų administratoriaus paskyros vartotojo vardas ir ADMIN_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.

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

  6. Atnaujinkite PKCS11 konfigūraciją adresu container/apache/p11nethsm.conf su savo NetHSMs URL ir galiojančiais operatoriaus įgaliojimais.

  7. Sukurkite sertifikatą ir raktą.

./container/apache/generate.sh
  1. Pastatykite konteinerį.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Paleiskite konteinerį.

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

„Apache“ 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 vartotojo.