Kann curl nicht auf die importierten CAs zugreifen?

Started by u.n.known, November 19, 2025, 12:19:06 PM

Previous topic - Next topic
Hi,

ich hab zwei interne CAs (Vault). Die per ACME certifikate ausstellen können. Beide haben custom Zertifikate, die von der OpnSense ausgestellt wurden. D.h. die komplette chain ist in OpnSense verfügbar. Wenn ich nun über den ACME-Client ein Zertifikat von einem der Vault holen will, dann fällt das auf die Nase. Ich erhalte den Errorcode 60, der besagt, dass das Zertifikat nicht gültig ist. (CURLE_PEER_FAILED_VERIFICATION (60)).
Kann es sein, dass ich die Ca-Chain noch anders in OpnSense importieren muss? Das es über das Web-Frontend nicht reicht und curl damit die chain damit nicht nutzen kann?

Muss ich die Ca-chain noch irgendwo importieren? Also wie bei ubuntu über den update-ca-certificates prozess?

Danke für Tipps

m.

Ich habe folgendes verstanden:

1. Du hast zwei interne CAs in OpnSense. Haken dran.
2. Diese können per ACME Zertifikate ausstellen. Wie das?

Bei 2 verlierst Du mich. ACME ist ein Protokoll/Verfahren, mit Hilfe dessen man Zertifikate ausstellen kann. OpnSense kann zwar Zertifikate ausstellen, unterstützt m.W. dazu aber nicht das ACME-Verfahren als ACME-Server. ACME wird nur per Plugin in der Rolle als ACME-Client, d.h. als Anforderer, nicht als Aussteller von Zertifikaten in OpnSense unterstützt.

Unabhängig davon werden in jedem Client natürlich nur die in der CA-Chain eingetragenen Root-CAs unterstützt. Wenn Du also auf einem Client per Curl irgend etwas abrufst, was von einer Deiner CAs ausgestellt wurde, musst Du auf dem entsprechenden Client auch die ausstellende CA eingetragen haben oder per Curl-Switch die Verifikation abschalten. Bei OpnSense selbst geht das elegant über "System: Trust: Authorities".
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Ich benutze auf der OpnSense in der Tat das ACME Plugin. Das ist ja "under the hood" ein Shell-Skript, was zu bestimmten Tasks curl verwendet. Soweit ist alles okay.

Bislang hab ich nur lets encrypt für extern erreichbare Seiten verwendet. Nun möchte ich, dass OpnSense für eine interne Seite ein internes Zertifikat verwendet.
Dazu müsste das Plugin über die URL einer Custom CA von dem Vault sich das Certifikat holen (Ja, da passiert mehr, aber für die Verdeutlichung reicht es glaub ich :)). Wenn es allerdings versucht das zu tun, schlägt es mit der Fehlermeldung CURLE_PEER_FAILED_VERIFICATION (60) fehl. Da der Vault über ein aktuelles und korrektes Zertifikat verfügt kann ich mir nicht vorstellen das es daran liegt. Dieses Zertifikat ist ausgestellt von der gleichen internen CA, die Komplett (Root-CA + Intermediate CA + Intermediate CA Cloud) auch im Trust/Authorities importiert ist.

Was ich vermute bzw. wonach ich gefragt hab: Kann es sein, dass das curl eben nicht die Chains aus dem Trust/Authorities verwendet? Das wäre für mich die einzige vernünftige Erklärung, warum es zu diesem Fehler kommt.

Hoffe das ich mich besser ausgedrückt hab. :D

Alles klar, Du hast es aber falsch verstanden: Du kannst entweder eigene Zertifikate direkt in der UI selbst erzeugen oder Dir per ACME.sh solche von einer offiziellen ACME-CA holen. Die interne OpnSense-CA beherrscht das ACME-Protokoll nicht, also sind diese Wege nicht kombinierbar, wie ich oben bereits erklärte.

Beide Typen von Zertifikat kannst Du u.a. für das OpnSense Web UI nutzen.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Okay... Ich hab hier einen Vault, das ist ein Server, der Vault von Hashicorp laufen hat. Dies beinhaltet den ACME Endpunkt, den ich von der OpnSense mit dem ACME-Plugin erreichen will. Dieser Vault hat ein Zertifikat von einer Kompletten CA, die in OpnSense verfügbar ist, also im Trust gespeichert.
Wenn ich das ACME-Plugin daraufhin konfiguriere, von diesem Vault-Server (NICHT von der opnsense) zu holen, dann fliegt er auf die Nase, weil CURL das Zertifikat nicht validieren kann. Auf dem Vault-Server ist ein valides Zertifikat hinterlegt (Name, Gültigkeit etc). Die dazugehörige CA im OpnSense unter trust. Gibt es also in der OpnSense eine möglichkeit dem curl noch zusätzlich ein Zertifikat hinzuzufügen, damit er kein Problem mit dem Endpunkt hat?

Ah, verstehe. Du verwendest gar nicht die OpnSense CA. Normalerweise sollte curl alle Zertifikate, die in System: Trust: Authorities eingetragen sind, akzeptieren. Bei mir tut es das, ich verwende auch eine eigene, externe CA.


Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Probier mal
certctl rehash

auf der OPNsense auszuführen. Wir hatten das schon auf Standard FreeBSD, was du beschreibst, und das war die Lösung. Mach einen Snapshot vorher (wenn du ZFS benutzt) oder mindestens ein Config-Backup.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)