SSL: Widerrufenes Zertifikat und CRL/OCSP

01/03/2014 - 18:15 von Ben Dietze | Report spam
Hallo allerseits,

ich will mal ein bisschen jammern, denn ich bin grad mit der
Gesamtsituation unzufrieden. Man denke sich folgendes nicht allzu
abwegiges Szenario: ein Zertifikat wird auf eine bestimmte Domain a.b.c
ausgestellt. Dann wird dieses Zertifikat widerrufen. Die zur Überprüfung
des Zertifikats notwendigen Daten sind allesamt im Zertifikat enthalten,
also eine URI für die OCSP und eine URI für die CRL und natürlich die
Daten der ausstellenden CA. Und der Gültigkeitszeitraum ist noch nicht
überschritten.

Erster Grund zu jammern: warum kann das tolle und màchtige openssl
(Version 1.0.1e für Ubuntu Linux) diese Infos nicht aus dem Zertifikat
lesen und verarbeiten? Stattdessen muss ich beim Aufruf "openssl ocsp
-cert abgelaufenes_zertifikat" noch die folgenden Optionen angeben:
"-issuer issuer_cert" für das explizite Herausgeberzertifikat und auch
noch "-url ocsp_url", damit openssl die im Zertifikat explizit
eingetragene URL für die OCSP auch wirklich benutzt. Ohne das
Herausgeberzertifikat gibt es nur eine Fehlermeldung und ohne explizite
URL gibt es keinen Hinweis auf den Widerruf.

Zweiter Grund zu jammern: warum ist Firefox (v27) ebenfalls nicht in der
Lage, die OCSP oder die CRL abzufragen, wenn kein root-Zertifikat
eingelesen wurde? Im Zertifikat selbst sind die URI beide vorhanden, nur
das Zertifikat der ausstellenden CA ist nicht direkt bekannt. FF bietet
stattdessen an, das Zertifikat manuell zu akzeptieren, ohne jeglichen
Hinweis darauf, dass das Zertifikat bereits widerrufen wurde oder
zumindest sein könnte. In einer anderen Instanz, in welcher das
root-cert eingelesen wurde, weist FF korrekt darauf hin, dass das
Zertifikat widerrufen wurde und bietet keine Möglichkeit an, dies zu
übergehen.

Es handelt sich konkret um ein Zertifikat der CAcert (Class 3 Root) für
eine 3rd-level Domain.

Mache ich alles falsch oder funktioniert das System tatsàchlich so? Wenn
es korrekt ist, wie es hier funktioniert oder eben nicht funktioniert,
dann scheint mir das System mit der CRL und dem OCSP ein klein wenig
sinnfrei zu sein. Wozu all diese Daten im Zertifikat hinterlegen, wenn
sie doch nicht genutzt werden? Warum wird eine CRL oder ein OCSP-Server
nur abgefragt, wenn das root-Zertifikat bekannt ist? Soweit ich die
Kette verstehe, ist das root-Zertifikat für die Abfrage der CRL oder per
OCSP nicht relevant, zumindest nicht bei negativer Antwort. Lediglich
eine positive Antwort muss/sollte(?) signiert sein.

Ich stehe grad auf dem Schlauch. Hinweise wàren toll. :)

Gruß
Ben
 

Lesen sie die antworten

#1 Ralf Döblitz
01/03/2014 - 19:14 | Warnen spam
Ben Dietze schrieb:
Hallo allerseits,

ich will mal ein bisschen jammern, denn ich bin grad mit der
Gesamtsituation unzufrieden. Man denke sich folgendes nicht allzu
abwegiges Szenario: ein Zertifikat wird auf eine bestimmte Domain a.b.c
ausgestellt. Dann wird dieses Zertifikat widerrufen. Die zur Überprüfung
des Zertifikats notwendigen Daten sind allesamt im Zertifikat enthalten,
also eine URI für die OCSP und eine URI für die CRL und natürlich die
Daten der ausstellenden CA. Und der Gültigkeitszeitraum ist noch nicht
überschritten.



Wen interessiert schon, was im Zertifikat selbst steht? Willst du deisen
Daten etwas einfach so vertrauen? Welchen Wert hàtte denn eine Prüfung
der CRL oder mit OCSP, wenn die URIs auf dem zu ürpfenden Zertifikat
selbst kàmen?

Erster Grund zu jammern: warum kann das tolle und màchtige openssl
(Version 1.0.1e für Ubuntu Linux) diese Infos nicht aus dem Zertifikat
lesen und verarbeiten?



nicht vertauenswürdig, s.o.

Stattdessen muss ich beim Aufruf "openssl ocsp
-cert abgelaufenes_zertifikat" noch die folgenden Optionen angeben:
"-issuer issuer_cert" für das explizite Herausgeberzertifikat und auch
noch "-url ocsp_url", damit openssl die im Zertifikat explizit
eingetragene URL für die OCSP auch wirklich benutzt. Ohne das
Herausgeberzertifikat gibt es nur eine Fehlermeldung und ohne explizite
URL gibt es keinen Hinweis auf den Widerruf.



Ebent. Die *vertauenswürdigen* URIs bzw. Zertifikate mußt du schon
selbst übergeben, das sollst schließlich du entscheiden und nicht der
potentielle Angreifer.

Zweiter Grund zu jammern: warum ist Firefox (v27) ebenfalls nicht in der
Lage, die OCSP oder die CRL abzufragen, wenn kein root-Zertifikat
eingelesen wurde?



s.o., keine vertrauenswürdigen Angaben vorhanden

Im Zertifikat selbst sind die URI beide vorhanden, nur
das Zertifikat der ausstellenden CA ist nicht direkt bekannt. FF bietet
stattdessen an, das Zertifikat manuell zu akzeptieren, ohne jeglichen
Hinweis darauf, dass das Zertifikat bereits widerrufen wurde oder
zumindest sein könnte.



Yep, wenn keine automatische Prüfung verlàßlich möglich ist, mußt du
eben selbst prüfen. Vernünftige Implementierung.

In einer anderen Instanz, in welcher das
root-cert eingelesen wurde, weist FF korrekt darauf hin, dass das
Zertifikat widerrufen wurde und bietet keine Möglichkeit an, dies zu
übergehen.



Ebenfalls sauber.

Es handelt sich konkret um ein Zertifikat der CAcert (Class 3 Root) für
eine 3rd-level Domain.

Mache ich alles falsch oder funktioniert das System tatsàchlich so?



Sieht alles sehr vernünftig und konsequent aus.

Wenn es korrekt ist, wie es hier funktioniert oder eben nicht
funktioniert, dann scheint mir das System mit der CRL und dem OCSP ein
klein wenig sinnfrei zu sein.



Nö, ist absolut sinnvoll. Nur muß man dafür eben das *richtige*
Zertfikat auswerten, eben jenes der CA, die das Dienst-Zertifikat
angeblich ausgestellt hat.

Wozu all diese Daten im Zertifikat hinterlegen, wenn sie doch nicht
genutzt werden?



Halt ich tatsàchlich für überflüssig.

Warum wird eine CRL oder ein OCSP-Server nur abgefragt, wenn das
root-Zertifikat bekannt ist? Soweit ich die Kette verstehe, ist das
root-Zertifikat für die Abfrage der CRL oder per OCSP nicht relevant,
zumindest nicht bei negativer Antwort. Lediglich eine positive Antwort
muss/sollte(?) signiert sein.



Und wie willst du sicherstellen, daß du genau die richtige Stelle bzgl.
Widerruf eines Zertifikats fragst? Diese Daten können doch sinnvoller-
weise nur aus einer vertrauenswürdigen Quelle kommen, also eben dem
CA-Zertifikat, daß du als vertrausnwürdig deklarierst.

Ralf
PHP an sich ist so wie der Vorname Kevin keine Bezeichnung sondern ein
Symptom.
  - Janek Schleicher in

Ähnliche fragen