[Eisfair] Certs: Sektionen im server.pem

Juergen Edner juergen at eisfair.org
Sa Feb 27 21:20:20 CET 2016


Hallo Marcus,

> Damit ein entfernter Rechner z. B. prüfen kann, ob ein vom Server X
> präsentiertes Zertifikat korrekt signiert ist (Certificate Chain), müsste
> man doch den öffentlichen Teil des CA-Zertifikates auch preisgeben
> können/müssen.

dies geschieht automatisch beim Verbindungsaufbau, d.h. ein Serverdienst
übermittelt Dir sein öffentliches Zertifikat,
die OpenSSL-Funktionen ermitteln dann aus dem Zertifikat den
Aussteller indem Sie über die Issuer-Zeile einen Hash bilden
mit Hilfe dessen sie dann im certs-Verzeichnis das Root-
Zertifikat suchen und so die Zertifikatskette prüfen.

> Ich habe in den Zertifikatsspeicher meines SuSE-Desktop-PC das CA.pem
> beigefügt, damit dem server.pem vertraut wird.

Das CA-Zertifikat besteht nur aus dem Zertifikatsanteil und der
Schlüssel wird hier separat gespeichert. Das das CA-Zertikikat
auf einen Client übertragen wird ist vollkommen korrekt um so
eine Prüfung der Zertifikatskette zu ermöglichen.

> Und nun kann sich jeder das PEM der Zertifizierungsstelle besorgen, um das
> von denen signierte Zertifikat auch prüfen zu können.

Ja dies ist soweit korrekt, wenn Du dieses Zertifikat auf einem
Server veröffentlichst, aber was hat dies der Zusammensetzung einer
Zertifikatsdatei für die Bereitstellung eines Dienstes auf einem
Server zu tun?

> Das glaube ich gerne, denn das ist alles ein großes schwarzes Loch; in der
> Feuerzangenbowle war es noch die Dampfmaschine, nun eben tun sich andere
> Löcher auf.

:-)

> Ich ging jetzt vom pem des Servers aus, welches z. B. dann (über Links) für
> apache, pure-ftpd, exim und Co benutzt wird.
> 
> Gibt es keine Gründe dieses auf einem Client installieren zu wollen?

Nein, ein solches Ansinnen könnte nur dann Sinn machen, wenn Du auf
einem entfernten Rechner die Zertifikatskette prüfen willst. Mittels
openssl s_client ...-Befehl (certs-request-cert) kannst Du es aber
jeder Zeit problemlos von einem Server abrufen und speichern ohne
manuell Dateien kopieren zu müssen.

> Nehme mal an ein zweiter Rechner wäre auch ein Mailserver, der bei eis die
> Mails abliefern will; dann müsste ich doch auch erstmal das exim-pem auf
> dem zweiten Server installieren, damit die smtp-Verbindung zustandekommt,
> so wie ich nun schon mir das gmx.pem für die Verbindung eisfair->gmx
> benötige.

Du würdest nicht _das_ exim.pem installieren, sondern _ein_ exim.pem.
Der Name exim.pem wird nur zur Vereinfachung genutzt um auf ein lokale
Zertifikat eines Servers zugreifen zu können. Für einen zweiten Server
würdest Du selbstverständlich ein neues Zertifikat ausstellen, da
dieser ja auch über eine eigenen Namen seinen E-Mail-Dienst
bereitstellt. (Die einzige Ausnahme bildet hier eventuell ein Wildcard-
Zertifikat)

> exim weigert sich strikt, wenn es die Kette nicht prüfen kann.

Dies ist korrekt, jedoch sind zur automatischen Zertifikatsprüfung
durch einen Dienst nur die eventuell benötigten Zwischen- und das
Root-Zertifikat erforderlich.

> Wenn man das server.pem (öffentlicher Zertifikatsteil) auf einem anderen
> Rechner importieren möchte, dann muss man eben höllisch aufpassen, dass een
> nur der öffentliche Teil übertragen wird.

Der Begriff "höllisch" ist relativ zu sehen, da der Administrator nun
einmal die Verantwortung trägt und wissen muss was er tut ;-)
Das separate Speichern der Zertifikatsinhalte hat in der Vergangenheit
jedoch mehr Probleme bereitet als gelöst.

> Ich habe bislang immer nur das Zertifkat der CA übertragen, damit eben dem
> eigentlichen Serverzertifikat vertraut werden kann.

Wie gesagt, dies beruht auf der fälschlichen Annahme, dass zur Prüfung
einer Zertifikatskette durch einen entfernten Client auch das
Server-zertifikat selbst benötigt wird, was jedoch nicht der Fall ist.

Gruß Jürgen
-- 
Mail: juergen at eisfair.org


Mehr Informationen über die Mailingliste Eisfair