Öffentliche S/MIME Schlüssel (Public Keys) über DFN-PKI suchen und importieren
Bisher habe ich für die Verschlüsselung und das Signieren von E-Mails GPG (OpenPGP) genutzt, welches auf der Idee vom Web of Trust basiert. Erst kürzlich habe ich gelernt, dass S/MIME im Grunde genau so funktioniert wie GPG, nur eben ohne Web of Trust, sondern mit einer hierarchischen Struktur. Hat man ein S/MIME Zertifikat, so wurde es von einer höheren Stelle ausgestellt, was jeder auch leicht nachprüfen kann. Fürs Signieren von Dokumenten ist das ein klarer Vorteil. Jeder sieht, dass die Unterschrift wirklich von einer bestimmten Person stammt. Da aufgrund von Corona sowieso alles digital abläuft und zumindest an der Universität auch eingescannte Unterschriften teilweise akzeptiert werden, wäre die Nutzung digitaler Unterschriften viel effizienter und sicherer. Daher habe ich jetzt auch ein S/MIME-Zertifikat bentragt. Über die Universiäten ist das meist kostenfrei möglich und die Zertifikate sind für drei Jahre gültig. Üblicherwise wird die Private key Infrastructure (PKI) des deutschen Forschungsnetzes (DFN) genutzt.
In diesem Zuge habe ich mich gefragt, wie man an die öffentlichen Schlüssel von Personen kommt, denen man eine E-Mail schreiben möchte. Man kann natürlich die Personen auffordern, ihren Schlüssel an eine Mail anzuhängen. Aber was, wenn man eine unbekannte Person anschreiben möchte? Geht das überhaupt? Klar, denn die Public Keys befinden sich im Verzeichnisdienst der DFN-PKI (https://www.pki.dfn.de/faqpki/faqpki-allgemein/#c15074). Allerdings ist die Prozedur etwas knifflig, denn der Dienst läuft über LDAP und bei Konfiguration z. B. über Thunderbird, wird das entscheidende Attribut (userCertificate) natürlich nicht angezeigt. Über ldapsearch
(Paket openldap) geht’s aber doch sehr einfach unter GNU/Linux:
ldapsearch -x -H ldap://ldap.pca.dfn.de:389 -b "ou=DFN-PKI,o=DFN-Verein,c=de" \
"cn=Johannes Titz"
## # extended LDIF
## #
## # LDAPv3
## # base <ou=DFN-PKI,o=DFN-Verein,c=de> with scope subtree
## # filter: cn=Johannes Titz
## # requesting: ALL
## #
##
## # johannes.titz@psychologie.tu-chemnitz.de, Technische Universitaet Chemnitz, D
## FN-PKI, DFN-Verein, DE
## dn: mail=johannes.titz@psychologie.tu-chemnitz.de,o=Technische Universitaet Ch
## emnitz,ou=DFN-PKI,o=DFN-Verein,c=DE
## cn: Johannes Titz
## mail: johannes.titz@psychologie.tu-chemnitz.de
## sn: Titz
## objectClass: inetOrgPerson
## userCertificate;binary:: MIIG6TCCBdGgAwIBAgIMJmUNYwmufKINUNz0MA0GCSqGSIb3DQEBC
## wUAMIGNMQswCQYDVQQGEwJERTFFMEMGA1UECgw8VmVyZWluIHp1ciBGb2VyZGVydW5nIGVpbmVzIE
## RldXRzY2hlbiBGb3JzY2h1bmdzbmV0emVzIGUuIFYuMRAwDgYDVQQLDAdERk4tUEtJMSUwIwYDVQQ
## DDBxERk4tVmVyZWluIEdsb2JhbCBJc3N1aW5nIENBMB4XDTIyMDMzMTExMjYxNFoXDTI1MDMzMDEx
## MjYxNFowcjELMAkGA1UEBhMCREUxKTAnBgNVBAoMIFRlY2huaXNjaGUgVW5pdmVyc2l0YWV0IENoZ
## W1uaXR6MQ0wCwYDVQQEDARUaXR6MREwDwYDVQQqDAhKb2hhbm5lczEWMBQGA1UEAwwNSm9oYW5uZX
## MgVGl0ejCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKOWn/NMDu8EiposvlTcvC5/KwL
## +8swl2Tzn3WqhYVY4RncAK/LQr6sZ47VHdRGCVV2auA7BDnsJPLsaBsW/cTG3wFlJBLJxAgBK/W0R
## m3CZeCWixFoFIm8HDRNkTW+EKFRgYkaSWBt4a0uGLCqJOT+6PM6W3s7vOQuBhCGnsc+6g3+ofKVFC
## Fth3L47La4QZ1Fknrcu202D4+NvBFBvJ9DAkpRNrPPlMWb/i+FkxfU93DK0YfHfGuuTDnscdpAVGz
## aVZbm2gK36ePrBgZf5ZREeoXBReg/wUOAkvpKkPOu6bv0UaON50lXZzBgO+tfnPQbJj0WUFkipHoA
## Of3J0m6Cqe+gPlGgsB/WFoVnfZl9EEcKuZ6N+gAIAxDNNLB76C/go1GfSmgbcL+LKaitD7JGQTrql
## zsc825EjrXuA0KGrwvoQD7sXoZQO/HgfkhIZv+QF3kTATw2vDLQ1pS8pabVBsuESPhr9bxuRQOyUh
## XS67/aI5rXllG/2GWroREnEy6Ji0eYo4GVaROfFPj1gjid66XzTeJjq7x7kjh57iF+MFrMJQ4vtMO
## HRk0PzU2tFExKFtJj6L3IqRtvjUg2onXfAphCYMF0uAtoTSlasVGxI88a2B5uprCK40qB7ww/YoDG
## q3AKRq7sVug21xx3+u/fZePMGxb40xYfCt4V7NPt1AgMBAAGjggJhMIICXTA+BgNVHSAENzA1MA8G
## DSsGAQQBga0hgiwBAQQwEAYOKwYBBAGBrSGCLAEBBAowEAYOKwYBBAGBrSGCLAIBBAowCQYDVR0TB
## AIwADAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDg
## QWBBSm2Itd+1jYRa8nXeJ/EsUyPz6t1zAfBgNVHSMEGDAWgBRrOpiL+fJTidrgrbIyHgkf6Ko7dDA
## zBgNVHREELDAqgShqb2hhbm5lcy50aXR6QHBzeWNob2xvZ2llLnR1LWNoZW1uaXR6LmRlMIGNBgNV
## HR8EgYUwgYIwP6A9oDuGOWh0dHA6Ly9jZHAxLnBjYS5kZm4uZGUvZGZuLWNhLWdsb2JhbC1nMi9wd
## WIvY3JsL2NhY3JsLmNybDA/oD2gO4Y5aHR0cDovL2NkcDIucGNhLmRmbi5kZS9kZm4tY2EtZ2xvYm
## FsLWcyL3B1Yi9jcmwvY2FjcmwuY3JsMIHbBggrBgEFBQcBAQSBzjCByzAzBggrBgEFBQcwAYYnaHR
## 0cDovL29jc3AucGNhLmRmbi5kZS9PQ1NQLVNlcnZlci9PQ1NQMEkGCCsGAQUFBzAChj1odHRwOi8v
## Y2RwMS5wY2EuZGZuLmRlL2Rmbi1jYS1nbG9iYWwtZzIvcHViL2NhY2VydC9jYWNlcnQuY3J0MEkGC
## CsGAQUFBzAChj1odHRwOi8vY2RwMi5wY2EuZGZuLmRlL2Rmbi1jYS1nbG9iYWwtZzIvcHViL2NhY2
## VydC9jYWNlcnQuY3J0MA0GCSqGSIb3DQEBCwUAA4IBAQB1xpmzfY8JSPeBzFdwmY3AvMyxAt7wCy5
## mOJeoyXKD7JZh9glbeStvDcsQ0BShKYeahPoIHqHMiEbXFSJ4gV5yAZQ1DugvO5UGo0bA93XuYJdD
## Gl9SGdduxuAm3e82mGHtpvwgWCIwaS+fXB6cQcbTqbx0kGoHdbRwkiPqkzc1K+wBscUinW899d67t
## t4youqA8FAbs+qPqlukSZfXRfAMk4PbOXcMWqdvoeaKQWSkBk/v4GwsTC8f+drd9K0+uOPtP6I+91
## BRzp1gnAyltKfdlQmCkEP2wuxP8PTtai3iyfrxbkk+AdTbrq/w/sjJMdwxKqCDIeWiajjQoOC3jvT
## 0
##
## # search result
## search: 2
## result: 0 Success
##
## # numResponses: 2
## # numEntries: 1
- -x braucht man um sich ohne Passwort zu authentifizieren
- -H gibt den Server an, den Port hinten nicht vergessen!
- -b ist die die searchbase, die genau so eingegeben werden sollte
Als letztes gibt man den Suchterm ein, cn steht hier für Common Name, man kann natürlich auch nach anderen Attributen suchen.
- ou ist übrigens die Organizational Unit
- o ist Organization
- c Country
Wenn man den Schlüssel ins Mailprogramm importieren möchte, dann erstellt man aus dem userCertificat eine richtige Zertifikatsdatei:
ldapsearch -x -H ldap://ldap.pca.dfn.de:389 -b "ou=DFN-PKI,o=DFN-Verein,c=de" \
"cn=Johannes Titz" > pubkey
echo "-----BEGIN CERTIFICATE-----" > pubkey.pem
tr -d '\n ' < pubkey | sed 's/.*binary:://; s/#search.*//' >> pubkey.pem
echo -e "\n-----END CERTIFICATE-----" >> pubkey.pem
cat pubkey.pem
## -----BEGIN CERTIFICATE-----
## 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
## -----END CERTIFICATE-----
Der sed-Befehl löscht alles vor und nach dem Public Key.
In Thunderbird importieren über Account Settings, End-To-End-Encryption, Manage S/MIME Certificates, Import. Name, Mailadresse usw. sind schon im Zertifikat kodiert.