Opsætning af TLS med Apache2#
Fif
Det samme koncept som beskrevet her kan bruges til mange applikationer, der anvender openssl som krypto-backend. Konceptet går for det meste ud på at erstatte en (hemmelig) nøglefil med en PKCS#11-URL, der henviser til en nøgle på et sikkerhedstoken (Nitrokey)
Forberedelse#
sikre, at apache2-versionen er mindst 2.4.42 for korrekt
mod_ssl
-understøttelseaktiver
mod_ssl
ved hjælp afa2enmod ssl
, hvis det ikke allerede er gjortdesuden er der behov for
openssl
oglibengine-pkcs11-openssl
se PKCS#11 URL
Konfigurer Apache2 til at bruge en sikkerhedsnøgle#
Det eneste, du skal gøre, er at erstatte SSLCertificateFile
med den korrekte PKCS#11-URL og slette alle andre henvisninger til nøgler eller certifikater. F.eks. er SSLCertificateKeyFile
ikke længere nødvendig.
Et eksempel på et direktiv kan se således ud:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
Den korrekte PKCS#11-URL kan udtrækkes som dokumenteret i PKCS#11 URL-generering
Sørg for at placere direktivet i en VirtualHost-konfiguration.
Angiv PIN-kode under opstart af Apache2#
Ved hjælp af den tidligere beskrevne metode vil Apache2 ved hver opstart bede om bruger-PIN’et, hvilket grundlæggende afviser batchopstart. Apache2 indeholder et andet direktiv til at angive PIN-koden under opstart.
SSLPassPhraseDialog "|/bin/echo 123456"
Apache2 forventer en eksekverbar fil efter |
, som vil blive eksekveret under opstart, og dens output (der forventes en afsluttende newline) vil blive brugt som PIN. Der kan naturligvis implementeres vilkårlige komplekse PIN-hentningsmetoder ved hjælp af denne fremgangsmåde. Selv om der her er valgt et trivielt eksempel, hvor man blot echo
PIN-koden under opstart.
Endvidere er SSLPassPhraseDialog
et globalt direktiv, og skal derfor placeres i det globale konfigurationsområde i Apache2.
Advarsel
Dette viste eksempel er ikke en sikker mekanisme til at overføre din PIN-kode, da den vil blive skrevet i klar tekst i din konfiguration
Se Apache2 mod_ssl-dokumentationen for flere oplysninger om denne funktion.
Komplet Apache2-konfiguration Eksempel#
Et komplet Apache2 (VirtualHost
) konfigurationsudsnit kan se således ud:
<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>