Nastavení protokolu TLS s Apache2¶
Compatible Nitrokeys  | 
|||||||
|---|---|---|---|---|---|---|---|
⨯ inactive  | 
⨯ inactive  | 
✓ active  | 
⨯ inactive  | 
⨯ inactive  | 
⨯ inactive  | 
⨯ inactive  | 
⨯ inactive  | 
Rada
Stejný koncept, který je zde popsán, lze použít pro mnoho aplikací využívajících openssl jako kryptografický backend. Koncepce se většinou omezuje na: nahrazení (tajného) souboru s klíčem URL PKCS#11 odkazujícím na klíč na bezpečnostním tokenu (Nitrokey).
Příprava¶
zajistěte, aby verze apache2 byla alespoň 2.4.42 pro správnou
mod_sslpodporu.aktivovat
mod_sslpomocía2enmod ssl, pokud již nebylo provedeno.navíc je potřeba
opensslalibengine-pkcs11-opensslviz PKCS#11 URL
Konfigurace aplikace Apache2 pro použití bezpečnostního klíče¶
V podstatě stačí nahradit SSLCertificateFile správnou adresou URL PKCS#11 a odstranit všechny ostatní odkazy na klíče nebo certifikáty. Například SSLCertificateKeyFile již není potřeba.
Příklad směrnice může vypadat takto:
SSLCertificateFile   "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
Správnou adresu URL PKCS#11 lze získat podle dokumentu PKCS#11 URL Generation
Nezapomeňte tuto směrnici umístit do konfigurace VirtualHost.
Poskytnutí kódu PIN během spouštění aplikace Apache2¶
Pomocí dříve popsané metody se Apache2 při každém spuštění zeptá na User-PIN, čímž v podstatě odmítne dávkové spouštění. Apache2 poskytuje další direktivu pro zadání PIN při spuštění.
SSLPassPhraseDialog     "|/bin/echo 123456"
Apache2 očekává za | spustitelný soubor, který bude spuštěn při startu a jeho’výstup (očekává se nový řádek na konci) bude použit jako PIN. Tímto přístupem lze samozřejmě implementovat libovolně složité metody získávání PIN. I když zde byl zvolen triviální příklad, kdy se při spuštění pouze echo zjistí PIN.
Dále SSLPassPhraseDialog je globální direktiva, proto musí být v Apache2 umístěna v globálním konfiguračním rozsahu.
Varování
Tento příklad není bezpečným mechanismem pro předání kódu PIN, protože bude zapsán v prostém textu uvnitř konfigurace.
Další podrobnosti o této funkci naleznete v Dokumentaci mod_ssl ke službě Apache2.
Kompletní příklad konfigurace Apache2¶
Kompletní fragment konfigurace Apache2 (VirtualHost) může vypadat takto:
<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>