WKD einrichten

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

Einleitung

Ein Web Key Verzeichnis (Web Key Directory, WKD) ermöglicht es auf eine einfache Weise, den aktuell gültigen öffentlichen Schlüssel (Public Key) für eine bestimmte E-Mail Adresse über HTTPS bereitzustellen und abzurufen.

Es gibt die Möglichkeit, das WKD im Advanced- oder Direct-Methode einzurichten. Im Direct-Mode wird der Pfad .well-known direkt auf der Domain erwartet, im Advanced-Mode wird mit einer Subdomain openpgpkey gearbeitet. Da die Trennung von der Hauptanwendung der Domain im Advanced-Mode einfacher ist, und weil die Clients auch erst über den Advanced-Mode versuchen, die Schlüssel herunterzuladen, beschränken wir uns in dieser Anleitung auf den Advanced Mode.

Voraussetzungen

Es wird vorausgesetzt, dass bereits ein Schlüsselpaar (private/public) erzeugt wurde (z.B. mit gpg --full-generate-key, oder mit Thunderbird, siehe unten in den Links).

Es muss eine Domain openpgpkey.<MeineDomain>.de im HSAdmin angelegt werden.

Der öffentliche Schlüssel muss in einer Textdatei im Domainbenutzer gespeichert sein. Diese Datei wird als Parameter für das Skript angeben.

Skript zur Einrichtung

Dieses Skript update_pgp_wkd.sh (Link zum Gist siehe unten) erledigt alles, was man braucht:

#!/bin/bash

if [ -z $1 ]
then
    echo "Bitte den Pfad für die Datei mit dem öffentlichen Key mitgeben: z.B. $0 ~/public.txt"
    exit
fi
publickeyfile=$(realpath $1)

if [ ! -f $publickeyfile ]
then
    echo "Kann den öffentlichen Schlüssel nicht finden: $publickeyfile"
    exit
fi

DOMAIN=$(find ~/doms/openpgpkey.*/htdocs-ssl | head -n 1 | awk -F/ '{ print $8 }' | sed -e 's/openpgpkey.//g')

if [ -z $DOMAIN ]
then
    echo "Zuerst muss die subdomain openpgpkey.$DOMAIN im HSAdmin eingerichtet werden!"
    exit
fi

cd ~/doms/openpgpkey.$DOMAIN
cat > .htaccess  <<FINISH
ForceType application/octet-stream;
<IfModule mod_headers.c>
   Header set Access-Control-Allow-Origin "*"
</IfModule>
FINISH
cd ~/doms/openpgpkey.$DOMAIN/htdocs-ssl/
rm -f .htaccess
mkdir -p .well-known/openpgpkey
cd .well-known
gpg --import < $publickeyfile
gpg --list-options show-only-fpr-mbox  -k "@$DOMAIN" | /usr/lib/gnupg/gpg-wks-client --install-key
touch openpgpkey/$DOMAIN/policy
chmod a+x openpgpkey/$DOMAIN/
chmod a+x openpgpkey/$DOMAIN/hu/
touch openpgpkey/$DOMAIN/hu/index.html

Einrichtung bei Hostsharing

Man ruft das Skript mit dem Pfad zur Datei mit dem öffentlichen Schlüssel als Parameter auf. Es wird die erste Domain gesucht, die mit "openpgpkey." beginnt.

./update_pgp_wkd.sh ~/public.txt

Anschließend kann man das Ergebnis mit dem Dienst auf metacode.biz testen, siehe Link unten.

Links