Nastavitev TLS z Apache2#
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
⨯ |
⨯ |
⨯ |
Nasvet
Isti koncept, kot je opisan tukaj, se lahko uporablja za številne aplikacije, ki uporabljajo openssl kot kriptografsko zaledje. Koncept se večinoma skrči na: zamenjajte (tajno) datoteko s ključem s PKCS#11 URL, ki se sklicuje na ključ na varnostnem žetonu (Nitrokey).
Priprava#
zagotovite, da je različica apache2 vsaj 2.4.42 za pravilno
mod_ssl
podporoaktivirajte
mod_ssl
z uporaboa2enmod ssl
, če to še ni storjenododatno sta potrebna
openssl
inlibengine-pkcs11-openssl
glej PKCS#11 URL
Konfiguracija Apache2 za uporabo varnostnega ključa#
V bistvu je treba le zamenjati SSLCertificateFile
z ustreznim naslovom URL PKCS#11 in izbrisati vse druge sklice na ključe ali potrdila. Npr. SSLCertificateKeyFile
ni več potreben.
Primer direktive je lahko videti takole:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
Ustrezen naslov URL PKCS#11 lahko pridobite, kot je dokumentirano v PKCS#11 URL Generation
Prepričajte se, da je direktiva v konfiguraciji VirtualHost.
Zagotovitev kode PIN med zagonom Apache2#
Z uporabo prej opisane metode bo Apache2 ob vsakem zagonu zahteval uporabniški PIN, s čimer bo v bistvu zavrnil paketni zagon. Apache2 ponuja še eno direktivo za zagotavljanje kode PIN med zagonom.
SSLPassPhraseDialog "|/bin/echo 123456"
Apache2 za |
pričakuje izvršilni program, ki se bo izvedel med zagonom in njegov’izhod (pričakuje se končna nova vrstica) bo uporabljen kot PIN. S tem pristopom se lahko izvedejo poljubno zapletene metode pridobivanja kode PIN. Čeprav je bil tukaj izbran trivialen primer, ki med zagonom samo echo
pridobi kodo PIN.
Nadalje SSLPassPhraseDialog
je globalna direktiva, zato mora biti v Apache2 nameščena v globalno področje konfiguracije.
Opozorilo
Ta prikazani primer ni varen mehanizem za posredovanje kode PIN, saj bo zapisana v obliki navadnega besedila v konfiguraciji.
Za več podrobnosti o tej funkciji glejte Dokumentacijo mod_ssl za Apache2.
Celoten primer konfiguracije Apache2#
Celoten fragment konfiguracije Apache2 (VirtualHost
) je lahko videti takole:
<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>