Opsætning af TLS med Apache2

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

inactive

inactive

active

inactive

inactive

inactive

inactive

inactive

Fif

The very same concept as descriped here can be used for many applications using openssl as crypto-backend. The concept mostly boils down to: replace (secret) key-file with PKCS#11 URL referencing a key on a security token (Nitrokey).

Forberedelse

  • sikre, at apache2-versionen er mindst 2.4.42 for korrekt mod_ssl-understøttelse

  • aktiver mod_ssl ved hjælp af a2enmod ssl, hvis det ikke allerede er gjort

  • desuden er der behov for openssl og libengine-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>