TLS-instelling met Apache2#
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
⨯ |
⨯ |
⨯ |
Hint
Hetzelfde concept als hier beschreven kan gebruikt worden voor vele toepassingen die openssl als crypto-backend gebruiken. Het concept komt neer op: vervang een (geheim) sleutelbestand door een PKCS#11 URL die verwijst naar een sleutel op een security token (Nitrokey)
Voorbereiding#
zorg ervoor dat de apache2 versie tenminste 2.4.42 is voor een goede
mod_ssl
ondersteuningactiveer
mod_ssl
meta2enmod ssl
, als dat nog niet gebeurd isaanvullend is
openssl
nodig enlibengine-pkcs11-openssl
zie PKCS#11 URL
Apache2 configureren om een veiligheidssleutel te gebruiken#
In principe is het enige wat u hoeft te doen SSLCertificateFile
te vervangen door de juiste PKCS#11 URL en alle andere verwijzingen naar sleutels of certificaten te verwijderen. Bv. SSLCertificateKeyFile
is niet meer nodig.
Een voorbeeld richtlijn zou er zo uit kunnen zien:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
De juiste PKCS#11 URL kan worden geëxtraheerd zoals gedocumenteerd in PKCS#11 URL Generation
Zorg ervoor dat de directive binnen een VirtualHost configuratie staat.
Geef PIN tijdens het opstarten van Apache2#
Met de eerder beschreven methode zal Apache2 bij elk opstarten om de User-PIN vragen, waardoor het opstarten van een batch in principe wordt geweigerd. Apache2 geeft een andere richtlijn om de PIN tijdens het opstarten te verstrekken.
SSLPassPhraseDialog "|/bin/echo 123456"
Apache2 verwacht een uitvoerbaar bestand na |
, dat tijdens het opstarten zal worden uitgevoerd en waarvan de uitvoer’s (er wordt een newline achteraan verwacht) als PIN zal worden gebruikt. Uiteraard kunnen met deze aanpak willekeurig complexe PIN-opvraagmethoden worden geïmplementeerd. Hoewel hier een triviaal voorbeeld is gekozen om alleen echo
de PIN tijdens het opstarten.
Verder is SSLPassPhraseDialog
een globale richtlijn, dus moet deze in Apache2 in het globale configuratiebereik worden geplaatst.
Waarschuwing
Dit getoonde voorbeeld is geen veilig mechanisme om uw PIN door te geven, aangezien het in platte tekst in uw configuratie zal worden geschreven
Zie de Apache2 mod_ssl documentatie voor meer details over deze functie.
Volledig Apache2 Config Voorbeeld#
Een volledige Apache2 (VirtualHost
) config snippet zou er als volgt uit kunnen zien:
<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>