TLS-i seadistamine Apache2-ga

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

inactive

inactive

active

inactive

inactive

inactive

inactive

inactive

Vihje

The very same concept as descriped here can be used for many applications using openssl as crypto-backend. The concept mostly boils down to: replace (secret) key-file with PKCS#11 URL referencing a key on a security token (Nitrokey).

Ettevalmistus

  • tagada, et apache2 versioon oleks vähemalt 2.4.42, et tagada korralik mod_ssl tugi.

  • aktiveeri mod_ssl kasutades a2enmod ssl, kui seda veel ei ole tehtud.

  • lisaks on vaja openssl ja libengine-pkcs11-openssl vt PKCS#11 URL.

Apache2 konfigureerimine turvavõtme kasutamiseks

Põhimõtteliselt tuleb vaid asendada SSLCertificateFile õige PKCS#11 URL-iga ja kustutada kõik muud viited võtmetele või sertifikaatidele. Näiteks SSLCertificateKeyFile ei ole enam vajalik.

Näidisdirektiiv võib välja näha selline:

SSLCertificateFile   "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"

Korraliku PKCS#11-URL-i saab ekstraheerida, nagu on dokumenteeritud dokumendis PKCS#11 URL-i genereerimine.

Asetage direktiiv kindlasti VirtualHost konfiguratsiooni sisse.

Anda PIN-kood Apache2 käivitamise ajal

Kasutades eelnevalt kirjeldatud meetodit, küsib Apache2 igal käivitamisel User-PIN-i, seega põhimõtteliselt keeldub batch-käivitamisest. Apache2 annab teise direktiivi PIN-koodi esitamiseks käivitamisel.

SSLPassPhraseDialog     "|/bin/echo 123456"

Apache2 ootab pärast | käivitatavat faili, mis käivitatakse käivitamise ajal ja selle’väljundit (oodatakse tagumist newline’i) kasutatakse PIN-koodina. Ilmselt saab selle meetodi abil rakendada suvalisi keerulisi PIN-koodi otsingumeetodeid. Kuigi siin on valitud triviaalne näide, et lihtsalt echo PIN-koodi käivitamise ajal.

Lisaks SSLPassPhraseDialog on globaalne direktiiv, seega tuleb see paigutada Apache2 globaalsesse konfiguratsiooni ulatusse.

Hoiatus

See näidatud näide ei ole turvaline mehhanism PIN-koodi edastamiseks, kuna see kirjutatakse lihtsas tekstis teie konfiguratsiooni sisse.

Vaata Apache2 mod_ssl documentation selle funktsiooni kohta lisateavet.

Täielik Apache2 konfiguratsiooni näide

Täielik Apache2 (VirtualHost<x>) konfiguratsioonilõik võiks välja näha selline:

<IfModule mod_ssl.c>
  SSLPassPhraseDialog     "|/bin/echo 123456"
  <VirtualHost _default_:443>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLEngine on

    SSLCertificateFile  "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0105076;token=UserPIN%20%28SmartCard-HSM%29"

    #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
      SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
      SSLOptions +StdEnvVars
    </Directory>
  </VirtualHost>
</IfModule>