DCV-Automatisierung
Diese Seite beschreibt, wie an der Uni Wien die Domain Control Validation (DCV) im Rahmen des ACOnet-Zertifikats-Service (TCS) für SSL/TLS automatisiert wurde. Kommentare und Ergänzungen sind willkommen (vorzugsweise per mail an ~at).
Übersicht
Die Bestätigung des DCV-Challenges wurde an der Uni Wien automatisiert:
- einheitliche DCV-Adresse für alle Domains,
- umgeleitet auf einen Account, der über procmail verfügt
- ein kleines Perl-Script setzt den DCV-Code in die Validierungswebseite
Einheitliche DCV-Adresse
Als Mail-Adresse für DCV wird einheitlich die im übrigen völlig unbenötigte Adresse administrator@
domain eingesetzt.
An der Uni Wien werden alle TCS-berechtigten Domains über den zentralen Mailserver abgehandelt. Dadurch konnten diese Adressen einfach durch einen Wildcard-Virtualuser auf eine Zieladresse gemappt werden.
Um die Auswahl der DCV-Adresse im TCS-Portal etwas zu vereinfachen, wurden die Default-Adressen für alle domains in der "Customer Info" unter "Preferred DCV Addresses" eingetragen.
Procmail-Recipies (optional)
Prinzipiell kann das Perl-Script direkt mit .forward oder einem vergleichbarem Mechanismus aufgerufen werden. Für eine bessere Fehlererkennung wurde aber procmail eingesetzt:
DCV_ADMIN=dcv-c@meine.domain.example DCV=$HOME/bin/dcv-automatik OUTF=$HOME/dcv-automatik.log P=$$ ###### DCV # # DCV-Challenge --> dcv-automatik # stdout/stderr --> dcv-automatik.log # # Bei Fehler zusaetzlich: # stdout/stderr --> dcv-automatik.$$ # Notification-Mail an dcv-c # # Offenbar hat Comodo unterschiedliche Templates fuer CSRs mit einer oder # mehreren Domains. Leider sind dabei Subject und From verschieden. # # DCV verwendet folgende Subjects: # ORDER #12345678 - Domain Control Validation for blibla.example # Demonstrate domain control and approve 2 domains for SSL/TLS certificate # order #12345678 # # DCV verwendet folgende Froms: # <docs@comodo\.com> # <noreply@trust-provider.com> # :0 iw * Subject: (Demonstrate domain control and approve .* domains for SSL/TLS|\ ORDER #[0-9]+ - Domain Control Validation for) * From: .* (<noreply@trust-provider.com>|<docs@comodo\.com>) | set -o pipefail ; $DCV 2>&1 | tee $OUTF.$P >> $OUTF && rm -f $OUTF.$P :0 e | (cat $OUTF.$P ; echo ======= ; cat ) | mail -s "$DCV failed $P" $DCV_ADMIN # ######
Bitte vor Gebrauch die Adresse $DCV_ADMIN
setzen. An diese Adresse werden ggf. Fehlermeldungen geschickt. $DCV
ist das Perl-Script, das die DCV-Validierung durchführt.
Perl-Script
Das Perl-Script dcv-automatik
ist unter GPL v. 3 freigelassen. Zur Installation ist folgendes zu beachten:
- Es muß auf geeignete Weise aufgerufen werden (z.B. durch das oben beschriebene Procmail-Recipe).
- Im script ist die Konstante
use constant from => '';
auf eine Kontakt-Mailadresse zu setzen. Diese wird mit den http-Headern mitgeschickt (RFC 2616, 14.22)
Das Script selbst ist simpel und verwendet lediglich LWP::UserAgent, sollte also auf zumindest jeder Posix-Umgebung funktionieren.