TLS sąranka su „Apache2#
Patarimas
Tą pačią čia aprašytą koncepciją galima naudoti daugelyje programų, kuriose openssl naudojamas kaip kriptografinis serveris. Koncepcija dažniausiai yra tokia: pakeisti (slaptą) rakto failą į PKCS#11 URL, kuriame pateikiama nuoroda į raktą, esantį saugumo ženkle (Nitrokey).
Paruošimas#
įsitikinkite, kad apache2 versija yra ne mažesnė kaip 2.4.42, kad būtų tinkamai
mod_ssl
palaikomasuaktyvinti
mod_ssl
naudojanta2enmod ssl
, jei tai dar nepadarytapapildomai reikia
openssl
irlibengine-pkcs11-openssl
žr. PKCS#11 URL
Sukonfigūruokite „Apache2“ naudoti saugumo raktą#
Iš esmės reikia tik pakeisti SSLCertificateFile
tinkamu PKCS#11 URL ir ištrinti visas kitas nuorodas į raktus ar sertifikatus. Pavyzdžiui, SSLCertificateKeyFile
nebereikia.
Direktyvos pavyzdys gali atrodyti taip:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
Tinkamą PKCS#11 URL galima išgauti, kaip aprašyta PKCS#11 URL generavimas
Įsitikinkite, kad ši direktyva yra VirtualHost konfigūracijos viduje.
PIN kodo pateikimas „Apache2“ paleidimo metu#
Naudojant anksčiau aprašytą metodą, „Apache2“ kiekvieno paleidimo metu paprašys vartotojo PIN kodo, taigi iš esmės atsisakys paketinio paleidimo. Apache2 pateikia kitą direktyvą, leidžiančią pateikti PIN kodą paleidimo metu.
SSLPassPhraseDialog "|/bin/echo 123456"
Po |
laukiama vykdomosios programos, kuri bus paleista paleidimo metu, o jos’išvestis (tikimasi naujos eilutės pabaigos) bus naudojama kaip PIN. Akivaizdu, kad taikant šį metodą galima įgyvendinti bet kokius sudėtingus PIN gavimo metodus. Nors čia pasirinktas trivialus pavyzdys, kai paleidimo metu tiesiog echo
išvedamas PIN kodas.
Be to, SSLPassPhraseDialog
yra globalioji direktyva, todėl ji turi būti patalpinta „Apache2“ globaliosios konfigūracijos srityje.
Įspėjimas
Šis pavyzdys nėra saugus PIN kodo perdavimo mechanizmas, nes jis bus įrašytas atviru tekstu konfigūracijos viduje.
Daugiau informacijos apie šią funkciją rasite Apache2 mod_ssl dokumentacijoje.
Pilnas „Apache2“ konfigūracijos pavyzdys#
Pilna „Apache2“ (VirtualHost
) konfigūracijos fragmentas gali atrodyti taip:
<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>