TLS beállítása Apache2-vel#
Tipp
Ugyanaz a koncepció, mint amit itt leírtunk, számos alkalmazáshoz használható, amely openssl-t használ kripto-backendként. A koncepció többnyire a következő: a (titkos) kulcsfájl cseréje PKCS#11 URL-re, amely egy biztonsági tokenen (Nitrokey) kulcsára hivatkozik.
Előkészítés#
győződjön meg róla, hogy az apache2 verziója legalább 2.4.42 a megfelelő
mod_ssl
támogatáshoz.aktiválja a
mod_ssl
használatávala2enmod ssl
, ha még nem tette meg.Ezenkívül
openssl
éslibengine-pkcs11-openssl
szükséges, lásd PKCS#11 URL.
Az Apache2 konfigurálása biztonsági kulcs használatára#
Alapvetően csak annyit kell tennie, hogy a SSLCertificateFile
-t kicseréli a megfelelő PKCS#11 URL-re, és törli a kulcsokra vagy tanúsítványokra való minden más hivatkozást. Például a SSLCertificateKeyFile
már nem szükséges.
Egy példa direktíva így nézhet ki:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
A megfelelő PKCS#11 URL-t a PKCS#11 URL generálás dokumentumban leírtak szerint lehet kinyerni.
Ügyeljen arra, hogy a direktívát egy VirtualHost konfiguráción belül helyezze el.
PIN-kód megadása az Apache2 indítása során#
A korábban leírt módszerrel az Apache2 minden indításkor kérni fogja a User-PIN-t, így alapvetően elutasítja a kötegelt indítást. Az Apache2 egy másik direktívát is biztosít a PIN megadására az indítás során.
SSLPassPhraseDialog "|/bin/echo 123456"
Az Apache2 a |
után egy futtatható állományt vár, amely az indítás során végrehajtásra kerül, és a kimenetét (a hátul lévő újsor várható) PIN-ként fogja használni. Nyilvánvalóan tetszőlegesen összetett PIN-keresési módszerek is megvalósíthatók ezzel a megközelítéssel. Bár itt egy triviális példát választottunk, hogy csak echo
a PIN-t az indítás során.
Továbbá SSLPassPhraseDialog
egy globális direktíva, ezért az Apache2-ben a globális konfigurációs tartományban kell elhelyezni.
Figyelem
Ez a példa nem biztonságos mechanizmus a PIN-kód átadására, mivel az egyszerű szöveges formában lesz leírva a konfiguráción belül.
Lásd az Apache2 mod_ssl dokumentációját a funkcióval kapcsolatos további részletekért.
Teljes Apache2 konfigurációs példa#
Egy teljes Apache2 (VirtualHost<x>
) konfigurációs részlet így nézhet ki:
<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>