Ich teste die Zertifikatsperrfunktion eines CMTS-Geräts. Dazu muss ich einen OCSP-Responder einrichten. Da es nur zum Testen verwendet wird, gehe ich davon aus, dass die von OpenSSL bereitgestellte minimale Implementierung ausreichen sollte.
Ich habe das a-Zertifikat von einem Kabelmodem extrahiert, auf meinen PC kopiert und in das PEM-Format konvertiert. Jetzt möchte ich es in der OpenSSL OCSP-Datenbank registrieren und einen Server starten.
Ich habe alle diese Schritte ausgeführt, aber wenn ich eine Client-Anfrage mache, antwortet mein Server immer mit "unbekannt". Es scheint mir völlig unbekannt zu sein, dass mein Zertifikat existiert.
Ich würde mich sehr freuen, wenn jemand bereit wäre, sich meinen Code anzusehen. Zur Vereinfachung habe ich ein einzelnes Skript erstellt, das aus einer sequentiellen Liste aller verwendeten Befehle besteht, vom Einrichten der Zertifizierungsstelle bis zum Starten des Servers: http://code.google.com/p/stacked-crooked/source/browse/ trunk / Misc / OpenSSL / AllCommands.sh
Sie finden auch die benutzerdefinierte Konfigurationsdatei und das Zertifikat, mit dem ich teste: http://code.google.com/p/stacked-crooked/source/browse/trunk/Misc/OpenSSL/
Jede Hilfe wäre sehr dankbar.
Antworten:
Bei Interesse: Hier ist meine Lösung.
Zuerst habe ich den OCSP-Responder von OpenSSL über Bord geworfen. Es kann nicht für Zertifikate verwendet werden, die nicht mit Ihrer selbstsignierten Zertifizierungsstelle erstellt wurden.
Anschließend habe ich mithilfe der OpenCA-Bibliotheken ein Befehlszeilendienstprogramm erstellt, mit dem eine OCSP-Antwort von einer OSCP-Anforderung erstellt werden kann. Es funktioniert vollständig dateibasiert: Sie führen es mit einer DER-formatierten OSCP-Anforderung als Eingabedatei aus und geben eine DER-formatierte OCSP-Antwortdatei aus.
Ein zweites Argument für das Befehlszeilendienstprogramm ist der Widerrufsstatus: gut, widerrufen oder unbekannt. Der Zertifikatstatus in der Antwortdatei entspricht dem übergebenen Argument. Der Code basiert auf diesem Beispiel , auf das mich The Rook in diesem Beitrag hingewiesen hat .
Der letzte Schritt bestand darin, einen HTTP-Server zu erstellen, der auf dem Befehlszeilendienstprogramm aufbaut. Ich habe dafür das Merb-Framework von Ruby verwendet. Ein nützliches Feature ist, dass der Widerrufsstatus als HTTP-URL angefordert werden kann, zum Beispiel: http://127.0.0.1:5000/good .
Aktualisieren
Da die oben genannten Links nicht funktionieren, werde ich den Skriptinhalt hier posten:
AllCommands.sh:
openssl.cnf:
thirdparty.pem:
Das Befehlszeilenprogramm, das OpenCA-Bibliotheken verwendet, ist in C geschrieben:
quelle