TLS-inställning med Apache2¶
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
⨯ |
⨯ |
⨯ |
Råd
Samma koncept som beskrivs här kan användas för många tillämpningar som använder openssl som kryptobackend. Konceptet går i huvudsak ut på att ersätta en (hemlig) nyckelfil med en PKCS#11-URL som hänvisar till en nyckel på en säkerhetstoken (Nitrokey).
Förberedelse¶
Se till att apache2 är minst 2.4.42 för att få korrekt
mod_ssl
-stöd.Aktivera
mod_ssl
med hjälp ava2enmod ssl
, om det inte redan är gjort.Dessutom behövs
openssl
ochlibengine-pkcs11-openssl
se PKCS#11 URL
Konfigurera Apache2 för att använda en säkerhetsnyckel¶
Det enda du behöver göra är att ersätta SSLCertificateFile
med den korrekta PKCS#11-URL:n och ta bort alla andra referenser till nycklar eller certifikat. SSLCertificateKeyFile
behövs inte längre.
Ett exempel på ett direktiv kan se ut så här:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
Den korrekta PKCS#11-URL:n kan extraheras enligt dokumentationen i PKCS#11 URL Generation
Se till att du placerar direktivet i en VirtualHost-konfiguration.
Ange PIN-kod vid start av Apache2¶
Med hjälp av den tidigare beskrivna metoden kommer Apache2 vid varje start att be om användar-PIN:et, vilket i princip innebär att batch-start avbryts. Apache2 tillhandahåller ett annat direktiv för att ange PIN-koden vid uppstart.
SSLPassPhraseDialog "|/bin/echo 123456"
Apache2 förväntar sig en körbar fil efter |
, som kommer att exekveras under uppstarten och dess utdata (avslutande nyrad förväntas) kommer att användas som PIN. Det är uppenbart att man med detta tillvägagångssätt kan genomföra godtyckligt komplexa metoder för att hämta PIN-koder. Här har dock ett trivialt exempel valts för att bara echo
PIN-koden under uppstarten.
Vidare är SSLPassPhraseDialog
ett globalt direktiv och måste därför placeras i det globala konfigurationsområdet i Apache2.
Varning
Det här exemplet är inte en säker mekanism för att överföra din PIN-kod, eftersom den kommer att skrivas i klartext i din konfiguration.
Se Apache2 mod_ssl documentation för mer information om denna funktion.
Exempel på fullständig Apache2-konfiguration¶
Ett komplett konfigurationsutdrag för Apache2 (VirtualHost
) kan se ut så här:
<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>