TLS-instelling met Apache2¶
| Compatible Nitrokeys | |||||||
|---|---|---|---|---|---|---|---|
| ⨯ inactive | ⨯ inactive | ✓ active | ⨯ inactive | ⨯ inactive | ⨯ inactive | ⨯ inactive | ⨯ inactive | 
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_sslondersteuning
- activeer - mod_sslmet- a2enmod ssl, als dat nog niet gebeurd is
- aanvullend is - opensslnodig en- libengine-pkcs11-opensslzie 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>