Folgende Ausgangssituation ist gegeben. Der Server liegt hinter einer OPNsense mit dem Plugin "Zenarmor". Auf dem Server wurde das Panel KeyHelp installiert. Nun sollte eine Domain auf dem Server mit einem Let's Encrypt Zertifikat ausgestattet werden. Die Ausstellung hat ohne Probleme funktioniert, aber im Error-Log der Domain findet man folgende Fehler:
SSL Library Error: error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag
SSL Library Error: error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error (Type=OCSP_RESPONSE)
AH01941: stapling_renew_response: responder error
Ein weiterer Fehler war dann auch der SSH Console zu erkennen, wenn man folgenden Befehl absetzt:
openssl s_client -connect meine-domain.tld:443 -status -tlsextdebug|grep OCSP
Fehlerausgabe:
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = meine-domain.tld
verify return:1
OCSP response:
OCSP Response Data:
ocsp response status trylater (0x3)
Response Type: Basic OCSP Response
Um den richtigen OCSP URL zu ermitteln, kann man entweder bei dem Anbieter des Zertifikates nachlesen, oder man prüft lokal die CRT-Datei:
cat mein-domain.tld.crt | openssl x509 -text -noout
Hier findet man dann folgende Zeilen:
Authority Information Access:
OCSP - URI:http://r3.o.lencr.org
CA Issuers - URI:http://r3.i.lencr.org/
Beim Anbieter Let's Encrypt kann man das hier nachlesen: https://letsencrypt.org/docs/lencr.org/
Das Problem wird nun mit einer Whitelist auf der OPNsense in dem Plugin "Zenarmor => Policies => Default => Web Kontrollen" behoben. Hier erstellt man sich eine eigene Kategorie und trägt die OCSP Domain von Let's Encrypt ein:
lencr.org
Man kann auch 3 Subdomains eintragen:
o.lencr.org
c.lencr.org
i.lencr.org
Danach funktioniert der OCSP Response wieder. Auf der Console sieht die Ausgabe wie folgt aus:
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = meine-domain.tld
verify return:1
OCSP response:
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response