07.05.2009/Kire

Claws Mail und S/MIME-Verschlüsselung mit CAcert-Zertifikat

Claws Mail S/MIME beizubringen ist nicht ganz einfach. Wie es zusammen mit CAcert-Zertifikaten geht, ist hier kurz und knapp beschrieben. Zum Einsatz kommt Claws Mail 3.5.0 auf Ubuntu 8.10 (Intrepid Ibex). Die Grundlage bildet dieses Howto.

Zuerst installieren wir einige Pakete:

sudo apt-get install claws-mail-smime-plugin gpgsm dirmngr gpg-agent

Nun brauchen wir den Schlüssel und ein Client-Zertifikat von CAcert. Beide werden mit den Optionen “Sign by class 1 root certificate”, “Include Name”, “Enable certificate login with this certificate” & “No Single Sign On ID” online generiert. Anschliessend können Schlüssel und Zertifikat als p12-Datei aus dem Firefox exportiert werden:

--> Edit --> Preferences --> Advanced --> Encryption --> View Certificates --> Your Certificates --> Zertifikat auswählen --> Name: email --> Passwort & bestätigen

Mit folgenden Befehlen kann der Schlüssel einzeln extrahiert und importiert werden:

openssl pkcs12 -in email.p12 -out email.pem
openssl pkcs12 -in email.pem -export -out email_key.p12 -nocerts -des3
mkdir ~/.gnupg/private-keys-v1.d/
gpgsm --call-protect-tool --p12-import --store email_key.p12

Sicherer ist es jedoch, den Schlüssel lokal zu generieren und bei CAcert ein Zertifikat über einen sogenannten Certificate Signing Request zu erstellen:

openssl genrsa -out email.key -des3 2048
openssl req -new -key email.key -out email.csr

Hier können alle Felder mit einem “.” ausgefüllt werden. Nur der Common Name muss z. B. mit der E-Mail-Adresse versehen werden.

Nun kann bei CAcert der Inhalt von email.csr ins entsprechende Feld beim Generieren des Client-Zertifikates kopiert werden. Und das im Anschluss erstellte Zertifikat zurück nach email.pem.

Nun muss der Schlüssel zuerst ins P12-Format konvertiert bevor er importiert werden kann:

openssl pkcs12 -in email.key -export -out email_key.p12 -nocerts -des3
mkdir ~/.gnupg/private-keys-v1.d/
gpgsm --call-protect-tool --p12-import --store email_key.p12

Für beide Varianten gilt es dann das Zertifikat inkl. CAcert-Kette zu installiert:

Von CAcert das Root- und Intermediate-Certificate im PEM-Fromat ziehen. Im email.pem alles, ausser das letzte Zertifikat (startet mit der BEGINN CERTIFICATE- und endet mit der END CERTIFICATE-Zeile), löschen, dann:

gpgsm --import CAcert_*
gpgsm --import email.pem

Nun den gpg-agent starten und prüfen, ob der Schlüssel da ist:

eval `gpg-agent --daemon`
gpgsm --list-secret-keys

Mit diesem Befehl die Trustlist mit den Fingerprints der importierten Zertifikaten füllen:

gpgsm --list-keys 2>/dev/null |grep fingerprint | awk '{print $2 " S"}' | sed s/://g > ~/.gnupg/trustlist.txt

Nun brauchte es noch zwei Konfigurations-Dateien. Zuerst ~/.gnupg/gpgsm.conf mit diesem Inhalt:

disable-crl-checks
disable-policy-checks
auto-issuer-key-retrieve
debug-level basic

Plus dem Fingerprint des Default-Keys, der mit diesem Befehl angehängt wird:

gpgsm --list-secret-keys 2>/dev/null |grep fingerprint | awk '{print "default-key " $2}' | sed s/://g >> ~/.gnupg/gpgsm.conf

Grundsätzlich scheint es nur disable-crl-checks zu benötigen. Damit ist leider die Überprüfung der Certification Revocation List ausgeschaltet. Das einzurichten dürfte aber etwas komplizierter sein…

Und zu guter Letzt noch die ~/.gnupg/gpg-agent.conf mit diesem Inhalt:

pinentry-program /usr/bin/pinentry-gtk-2
default-cache-ttl 86400
max-cache-ttl 86400
disable-scdaemon
allow-mark-trusted

Vor dem Aufruf von Claws Mail muss nun jeweils in der selben Session der gpg-agent gestartet werden. Am einfachsten geht das, indem das Start-Icon ins Panel oder auf den Desktop kopiert und der Startbefehl neu so gesetzt wird:

bash -c "eval `gpg-agent --daemon` && claws-mail"

Achtung in den Einstellungen zum GPG-Plugin darf keine manueller Key eingetragen, sondern “Use default GnuPG key” ausgewählt sein, was in der Grundkonfiguration auch der Fall ist.