TLS iestatīšana ar Apache2#
Mājiens
To pašu koncepciju, kas aprakstīta šeit, var izmantot daudzās lietojumprogrammās, izmantojot openssl kā kriptogrāfijas backend. Koncepcija lielākoties ir šāda: aizstāt (slepeno) atslēgas failu ar PKCS#11 URL, kas atsaucas uz drošības marķiera (Nitrokey) atslēgu.
Sagatavošana#
pārliecinieties, ka apache2 versija ir vismaz 2.4.42, lai nodrošinātu
mod_ssl
atbalstu.aktivizēt
mod_ssl
, izmantojota2enmod ssl
, ja tas jau nav izdarītspapildus
openssl
ir nepieciešams unlibengine-pkcs11-openssl
skatīt PKCS#11 URL
Apache2 konfigurēšana, lai izmantotu drošības atslēgu#
Būtībā vienīgais, kas jādara, ir jāaizstāj SSLCertificateFile
ar pareizo PKCS#11 URL un jāizdzēš visas citas atsauces uz atslēgām vai sertifikātiem. Piemēram, SSLCertificateKeyFile
vairs nav nepieciešams.
Direktīvas piemērs varētu izskatīties šādi:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
Atbilstošu PKCS#11 URL var iegūt, kā dokumentēts PKCS#11 URL ģenerēšana
Noteikti ievietojiet direktīvu konfigurācijā VirtualHost.
PIN nodrošināšana Apache2 palaišanas laikā#
Izmantojot iepriekš aprakstīto metodi, Apache2 pie katras palaišanas pieprasīs lietotāja PIN kodu, tādējādi būtībā atteikdamies no sērijveida palaišanas. Apache2 piedāvā vēl vienu direktīvu, lai palaišanas laikā sniegtu PIN kodu.
SSLPassPhraseDialog "|/bin/echo 123456"
Apache2 sagaida izpildāmo failu pēc |
, kas tiks izpildīts palaišanas laikā, un tā izvades rezultāti (sagaidāma pēdējā jaunā rindiņa) tiks izmantoti kā PIN. Acīmredzot, izmantojot šo pieeju, var īstenot jebkuras sarežģītas PIN iegūšanas metodes. Lai gan šeit ir izvēlēts triviāls piemērs, lai tikai echo
palaišanas laikā iegūtu PIN kodu.
Turklāt SSLPassPhraseDialog
ir globāla direktīva, tāpēc tā jāieliek Apache2 globālās konfigurācijas jomā.
Brīdinājums
Šis parādītais piemērs nav drošs PIN koda nodošanas mehānisms, jo tas tiks ierakstīts atklātā tekstā jūsu konfigurācijā.
Sīkāku informāciju par šo funkciju skatīt Apache2 mod_ssl dokumentācijā.
Pilnīgs Apache2 konfigurācijas piemērs#
Pilnīgs Apache2 (VirtualHost
) konfigurācijas fragments varētu izskatīties šādi:
<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>