OCSP - Online Certificate Status Protocol

Diesen Beitrag schrieb ich 8 Jahre und 8 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 1 Minute

Was ist OCSP?

RFC 6960 beschreibt den Internetstandard des Online Certificate Status Protocol (OCSP): es ermöglicht es dem Client, also beispielsweise deinem Browser, den aktuellen Status eines Zertifikats abzufragen, was höhere Aktualität als die herkömmlichen Certificate Levocation Lists (CRLs) bietet. Die Antwort auf die Frage, ob ein Zertifikat gültig ist, kommt von einem OCSP-Responder, der vom Aussteller des Zertifikats betrieben wird; an dieser Stelle kann, je nach Anbieter, ein Flaschenhals entstehen, wenn dieser Responder Anfragen nämlich langsam beantwortet – das bremst dann den gesamten Seitenaufbau (teilweise leider fühlbar) aus.

OCSP Stapling in nginx

Im ersten Schritt ziehst du dir das ca-bundle.pem von StartSSL und legst es nach /etc/nginx/ssl. Wichtig ist hierbei, dass du, wenn du mehrere Webseiten per SSL betreibst, das OCSP Stapling entweder für alle diese gültig sein muss oder gar nicht funktioniert – weshalb ich die Einstellungen nicht pro Webseite, sondern global vorgenommen habe.

$ cd /etc/nginx/ssl
$ wget http://www.startssl.com/certs/ca-bundle.pem
## file: "/etc/nginx/mods-enabled/ssl.conf"
## Macht die Abfragen via Google DNS
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=86400;
resolver_timeout 10;
ssl_trusted_certificate /etc/nginx/ssl/ca-bundle.pem;

OCPS Stapling in apache2

## file: "/etc/apache2/mods-enabled/ssl.conf"
...
  SSLCompression off
  SSLUseStapling on
  SSLStaplingCache shmcb:${APACHE_RUN_DIR}/ocsp(512000)
  SSLStaplingReturnResponderErrors off
  SSLStaplingResponderTimeout 5
...

OCSP Stapling testen

Du hast zwei Möglichkeiten zu überprüfen, ob das OCSP Stapling nach einem Restart deines Webservers sauber funktioniert: auf der Konsole mittels openssl oder über die SSL Labs Website. Beachte hierbei, dass der erste Testlauf immer fehlschlägt – erst ab dem zweiten Testlauf ist mit einer positiven Antwort zu rechnen!

$ openssl s_client -connect www.spiller.me:443 -tls1  -tlsextdebug -status
CONNECTED(00000003)
...
OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: C = IL, O = StartCom Ltd. (Start Commercial Limited), CN = StartCom Class 1 Server OCSP Signer
    ...
    Cert Status: good
    ...

Sollte es nicht funktionieren, erscheint auch bei jedem weiteren Aufruf der Hinweis OCSP response: no response sent – dann ist Debugging angesagt, und die Logfiles deines Webservers sind deine erste Anlaufstelle.

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „OCSP - Online Certificate Status Protocol“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.