TLS-i seadistamine Apache2-ga#

(Nitrokey HSM 2 - macOS)

Vihje

Sama kontseptsiooni, mida siin kirjeldatakse, saab kasutada paljude rakenduste puhul, mis kasutavad openssl-i krüpto-backendina. Kontseptsioon seisneb enamasti selles, et (salajase) võtmefaili asendamine PKCS#11 URL-iga, mis viitab võtmele turvamärkil (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>