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.