Configurarea TLS cu Apache2#
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
⨯ |
⨯ |
⨯ |
Sugestie
Același concept descris aici poate fi folosit pentru multe aplicații care folosesc openssl ca crypto-backend. Conceptul se rezumă în principal la: înlocuirea fișierului cheie (secret) cu PKCS#11 URL care face referire la o cheie pe un token de securitate (Nitrokey).
Pregătire#
asigurați-vă că versiunea apache2 este cel puțin 2.4.42 pentru un suport adecvat
mod_ssl`
activați
mod_ssl`
folosinda2enmod ssl
, dacă nu a fost deja făcutîn plus
openssl
este necesar șilibengine-pkcs11-openssl
vezi PKCS#11 URL
Configurați Apache2 pentru a utiliza o cheie de securitate#
Practic, singurul lucru care trebuie făcut este să înlocuiți SSLCertificateFile
cu URL-ul PKCS#11 corespunzător și să ștergeți orice alte referințe la chei sau certificate. De exemplu, SSLCertificateKeyFile
nu mai este necesar.
Un exemplu de directivă ar putea arăta astfel:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
URL-ul PKCS#11 adecvat poate fi extras așa cum este documentat în PKKCS#11 URL Generation
Asigurați-vă că plasați directiva în interiorul unei configurații VirtualHost.
Furnizați PIN-ul în timpul pornirii Apache2#
Folosind metoda descrisă anterior, Apache2 va cere la fiecare pornire codul PIN al utilizatorului, refuzând astfel practic pornirea pe loturi. Apache2 oferă o altă directivă pentru a furniza PIN-ul la pornire.
SSLPassPhraseDialog "|/bin/echo 123456"
Apache2 așteaptă un executabil după |`
, care va fi executat la pornire, iar ieșirea acestuia (se așteaptă o linie nouă la sfârșit) va fi utilizată ca PIN. Evident, metodele complexe arbitrare de recuperare a PIN-ului pot fi implementate folosind această abordare. Deși aici a fost ales un exemplu trivial pentru a obține doar echo`
PIN-ul în timpul pornirii.
Mai mult, SSLPassPhraseDialog`
este o directivă globală, deci trebuie să fie plasată în domeniul de configurare globală în Apache2.
Atenționare
Acest exemplu prezentat nu este un mecanism sigur pentru a transmite PIN-ul, deoarece acesta va fi scris în text simplu în interiorul configurației dvs.
Consultați Documentația Mod_ssl pentru Apache2 pentru mai multe detalii despre această caracteristică.
Exemplu complet de configurare Apache2#
Un fragment complet de configurare Apache2 (VirtualHost
) ar putea arăta astfel:
<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>