Nastavenie TLS pomocou Apache2#
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
⨯ |
⨯ |
⨯ |
Rada
Rovnaký koncept, ako je tu popísaný, sa dá použiť pre mnohé aplikácie, ktoré používajú openssl ako kryptografický backend. Koncept sa väčšinou obmedzuje na: nahradenie (tajného) súboru s kľúčom pomocou PKCS#11 URL odkazujúceho na kľúč na bezpečnostnom tokene (Nitrokey)
Príprava#
zabezpečiť, aby verzia apache2 bola aspoň 2.4.42 pre správnu
mod_ssl
podporuaktivujte
mod_ssl
pomocoua2enmod ssl
, ak sa tak ešte nestalonavyše
openssl
je potrebné alibengine-pkcs11-openssl
pozri PKCS#11 URL
Konfigurácia Apache2 na používanie bezpečnostného kľúča#
V podstate stačí nahradiť SSLCertificateFile
správnou URL PKCS#11 a odstrániť všetky ostatné odkazy na kľúče alebo certifikáty. Napríklad SSLCertificateKeyFile
už nie je potrebný.
Príklad smernice môže vyzerať takto:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
Správnu adresu PKCS#11 URL možno získať podľa dokumentácie v PKCS#11 URL Generation
Nezabudnite umiestniť túto smernicu do konfigurácie VirtualHost.
Poskytnutie PIN kódu počas spúšťania Apache2#
Pomocou predtým opísanej metódy sa Apache2 pri každom spustení spýta na User-PIN, čím v podstate odmietne dávkové spúšťanie. Apache2 poskytuje ďalšiu direktívu na zadanie PIN kódu počas spúšťania.
SSLPassPhraseDialog "|/bin/echo 123456"
Apache2 očakáva za |
spustiteľný súbor, ktorý sa vykoná počas spúšťania a jeho’výstup (očakáva sa končiaci nový riadok) sa použije ako PIN. Je zrejmé, že pomocou tohto prístupu možno implementovať ľubovoľne zložité metódy získavania PIN. Hoci tu bol zvolený triviálny príklad, aby sa počas spúšťania len echo
získal PIN.
Ďalej SSLPassPhraseDialog
je globálna smernica, preto musí byť umiestnená v globálnom konfiguračnom rozsahu Apache2.
Varovanie
Tento príklad nie je bezpečným mechanizmom na odovzdanie PIN kódu, pretože bude zapísaný v otvorenom texte vo vašej konfigurácii.
Viac informácií o tejto funkcii nájdete v Dokumentácii mod_ssl k Apache2.
Príklad kompletnej konfigurácie Apache2#
Úplný fragment konfigurácie Apache2 (VirtualHost
) môže vyzerať 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>