Wofür brauche ich einen eigenen WKD Server?
Ich benutze Stalwart als Mailserver und Stalwart ist kein klassischer Mailserver wie Mailcow mit nginx, dovecot, postfix usw. im unterbau, sondern wurde komplett neu in Rust geschrieben.
Da ich nicht weiß wo genau das .well-known verzeichnis von Stalwart liegt nutze ich anstatt der Direct Methode die Advanced Methode. Das funktioniert so das ich einen eigenen Nginx Server habe wo ich die Policy Datei und die PGP Schlüsssel als “hu” hinterlegt habe und das ganze auf der Domain “openpgpkey.rochoellocho.org” veröffentliche.
Schritt 1: DNS Einträge
Als erstes habe ich einen A Rekord gemacht auf die Subdomain “openpgpkey” und der dazugehörigen IP. In meinem Fall ist die IP von meinem Reverse Proxy der sich dann muss um die Zertifikate kümmert.
Schritt 2: Nginx Server aufsetzen
Ich habe auf einer Ubuntu 24.04 Machine nginx Installiert
sudo apt install nginx
Dann habe ich eine neue nginx Config Erstellt:
sudo nano /etc/nginx/sites-available/openpgpkey.rochoellocho.org.conf
mit folgendem Inhalt:
server {
listen 80;
listen [::]:80; # Lauscht auf IPv4 und IPv6 für Port 80
server_name openpgpkey.rochoellocho.org;
root /var/www/openpgpkey.rochoellocho.org/html;
location /.well-known/openpgpkey/ {
default_type "application/octet-stream";
add_header Access-Control-Allow-Origin "*";
types {
text/plain policy;
}
allow all;
}
# Standard-Fehlerseiten
error_page 404 /404.html;
location = /404.html {
internal;
}
}
Ich habe hier nur http genommen da sich mein Reverse proxy um https kümmert.
Dann habe ich folgendes Verzeichnis erstellt:
/var/www/openpgpkey.rochoellocho.org/html/.well-known/openpgpkey/rochoellocho.org/hu/
Dann habe ich ein symlink erstellt:
sudo ln -s /etc/nginx/sites-available/openpgpkey.rochoellocho.org.conf /etc/nginx/sites-enabled/
Zudem habe ich noch geprüft ob die Nginx config korrekt ist:
sudo nginx -t
und habe Nginx neu gestartet:
sudo systemctl reload nginx
Dann habe ich noch die Policy Datei erstellt:
touch /var/www/openpgpkey.rochoellocho.org/html/.well-known/openpgpkey/rochoellocho.org/policy
Schritt 3: PGP Schlüssel erstellen
Als erstes habe ich GnuPG installiert.
sudo apt update && sudo apt install gnupg gnupg-agent
gpg --full-generate-key
Hier habe ich die 9 ausgewählt werden
Hier habe ich die 1 ausgewählt werden
Hier muss ausgewählt werden wie lange der Key gültig ist. Ich habe hier 1y genommen für 1 Jahr.
Hier muss der name hinterlegt werden sowie die E-Mail Addresse.
Dann wird man aufgefordert eine Passphrase zu hinterlegen. Beachte das diese jedes mal abgefragt wird wenn du eine E-Mail entschlüsseln willst.
Diesen Schlüssel muss man jetzt exportieren um mit ihm später E-Mails zu verschlüsseln oder zu entschlüsseln. Diesen muss man Später z.B. in Thunderbird hinterlegen. Dazu braucht man die Schlüssel ID
gpg --list-secret-keys --keyid-format=long
Die Schlüssel ID ist der Teil hinter dem ed25519/
Mit der Schlüssel ID kann man nun den Privaten Key exportieren.
gpg --armor --export-secret-keys DEINE_SCHLUESSEL_ID_ODER_EMAIL > ~/mein_privater_schluessel_backup.asc
Der Schlüssel wird jetzt in einer Datei mit der Endung .asc hinterlegt.
Nun muss noch die Hashed User ID berechnet werden.
gpg --with-wkd-hash --fingerprint rocho@rochoellocho.org
Den Hash findet man in der Zeile uid vor @rochoellocho.org:
Mit diesem hash erzeugte ich eine WKD-Datei:
gpg --no-armor --export rocho@rochoellocho.org > <Hash-wert>
Diese Datei muss nun in dem Ordner /var/www/openpgpkey.rochoellocho.org/html/.well-known/openpgpkey/rochoellocho.org/huhinterlegt werden.
Schritt 4: Check
Nun kann man per WKD Chekcker checken ob alles richtig Konfiguriert ist. Hier sollte alles auf Grün sein.