OPNsense Forum

International Forums => German - Deutsch => Topic started by: white_rabbit on February 20, 2020, 11:54:52 am

Title: Problem mit openssl / trusted chain
Post by: white_rabbit on February 20, 2020, 11:54:52 am
Hallo.
Ich habe unsere OPNSense-Firewall so eingerichtet, dass sie über das LE-Plugin Let's Encrypt Zertifikate holt und erneuert. Nun brauchte ich dieses Zertifikat nicht nur auf der FW sondern auch lokal auf einem Server. Daher habe ich alle Dateien unter
Quote
"/var/etc/acme-client/home/"
heruntergeladen und lokal verwendet.
Wenn ich nun
Code: [Select]
echo -n | openssl s_client -connect server:443 verwende, erhalte ich

Code: [Select]
CONNECTED(00000005)
depth=0 CN = server.meine-domain.de
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = server.meine-domain.de
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:CN = server.meine-domain.de
   i:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
---
Und ganz unten dann nochmals:
Code: [Select]
Verify return code: 21 (unable to verify the first certificate)

Wenn ich das gleiche auf der Firewall selbst ausführe, ist die Zertifikatskette vollständig. Dort erhalte ich dann die richtige Ausgabe:
Code: [Select]
---
Certificate chain
 0 s:CN = firewall.meine-domain.de
   i:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
 1 s:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
   i:O = Digital Signature Trust Co., CN = DST Root CA X3
---

Die Frage ist: Warum? Was fehlt da bzw was ist falsch konfiguriert?
Am HAProxy liegt es offenbar nicht, denn wenn der Service ausgeschaltet ist, erscheinen die gleichen Meldungen.
Danke für eine gute Idee!

Title: Re: Problem mit openssl / trusted chain
Post by: ArminF on February 20, 2020, 12:03:55 pm
Hast Du die root certificate auf dem Server installiert?

Und wenn es ein Intermediate dazwischen hast kommt das meist vorher

Server:
Server

Local trust:
intermediate
root

Am besten mal das cer anschauen in text editor.
A
Title: Re: Problem mit openssl / trusted chain
Post by: white_rabbit on February 20, 2020, 12:16:39 pm
Das root-cert ist doch per default installiert, oder??
 DST Root CA X3 ist vorhanden.
Code: [Select]
DST_Root_CA_X3.pem -> /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt

Quote
Am besten mal das cer anschauen in text editor.
Wie meinst du das -- bzw was dann?
Title: Re: Problem mit openssl / trusted chain
Post by: ArminF on February 20, 2020, 03:58:40 pm
Ich kenne lets encrypt nicht.

Wir hatte nur immer Probleme wenn Intermediates dazwischen waren.
Da hat das intermediate oft gesponnen wegen der Reihenfolge.
Title: Re: Problem mit openssl / trusted chain
Post by: white_rabbit on February 20, 2020, 04:25:48 pm
Aber hier sieht doch alles danach aus, als sei das Gegenteil der Fall: die Kette ist zu kurz. Normalerweise sollte sie so aussehen wie im Fall der firewall oben -- also über 3 Zertifikate gehen
Title: Re: Problem mit openssl / trusted chain
Post by: JeGr on February 20, 2020, 04:26:58 pm
> "/var/etc/acme-client/home/"
> heruntergeladen und lokal verwendet.

Und welche Dateien hast du da erhalten? Ich vermute das Stammzertifikat (CA) von ACME/LetsEncrypt ist da nicht mit drin oder das Intermediate fehlt?
Title: Re: Problem mit openssl / trusted chain
Post by: white_rabbit on February 20, 2020, 04:39:06 pm
Diese Dateien sind in dem Ordner enthalten:

Code: [Select]
-rwxr-x---  1 root  wheel  1648 Jan 29 10:08 ca.cer*
-rwxr-x---  1 root  wheel  3933 Jan 29 10:08 fullchain.cer*
-rwxr-x---  1 root  wheel  2285 Jan 29 10:08 server.meine-domain.de.cer*
-rwxr-x---  1 root  wheel   958 Jan 29 10:08 server.meine-domain.de.conf*
-rwxr-x---  1 root  wheel  1700 Jan 29 10:08 server.meine-domain.de.csr*
-rwxr-x---  1 root  wheel   220 Jan 29 10:08 server.meine-domain.de.conf*
-rwxr-x---  1 root  wheel  3243 Nov 21 11:32 server.meine-domain.de.key*

Davon habe ich alles außer *.conf auf den Server gepackt.
Das root-Cert ist doch *immer* vorhanden. Es fehlt wahrscheinlich eher das intermediate von LE? Aber ich dachte, dass das mit in der fullchain steckt?
Title: Re: Problem mit openssl / trusted chain
Post by: fabian on February 20, 2020, 05:07:05 pm
Full chain sollte am Webserver verwendet werden, da ist das Zertifikat und alle intermediate Zertifikate drin. Verwende ich selbst mit nginx ohne Probleme.
Title: Re: Problem mit openssl / trusted chain
Post by: white_rabbit on February 20, 2020, 05:42:47 pm
Also wenn ich folgendes auf einem Client mache, klappt es:

Unter /usr/local/share/ca-certificates einen Link auf  das heruntergeladene cacert.crt und anschließend
update-ca-certificates
(Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.)

Danach:
openssl s_client  -connect server:443
und siehe da:

Code: [Select]
Verify return code: 0 (ok)
... aber ist das die richtige Vorgehensweise? Ich dachte, dass das intermediate-cert auch vom Server heruntergeladen wird und dann die Kette als gültig angesehen wird??

Title: Re: Problem mit openssl / trusted chain
Post by: fabian on February 20, 2020, 07:01:48 pm
Nur wenn das intermediate von einer CA in deinem Store signiert ist.
Title: Re: Problem mit openssl / trusted chain
Post by: white_rabbit on February 20, 2020, 07:05:17 pm
moment -- verstehe ich jetzt nicht, aber vielleicht reden wir auch aneinander vorbei:

Der Aufbau der Zertifikatskette ist hier dieser:
1.) Root-cert  DST Root CA X3
2.) Let's Encrypt Authority X3
3.) Eigenes Cert (von LE erstellt)

Nummer 2 ist für meine Begriffe das intermediate-cert, das sich hinter cacert.pem verbirgt.
Das root-Cert ist ebenfalls vorhanden -- und zwar per default unter /etc/ssl/certs/

Sollte es nicht so sein, dass AUCH das cacert (also Nr2) vom Server heruntergeladen wird, wenn mit openssl die Verbindung auf Port 443 aufgemacht wird?

Title: Re: Problem mit openssl / trusted chain
Post by: fabian on February 20, 2020, 08:56:11 pm
Ja, dein Server sollte die ganze Chain ausliefern.
Title: Re: Problem mit openssl / trusted chain
Post by: white_rabbit on February 20, 2020, 10:39:25 pm
Ja -- soweit die Theorie. Was könnte der Grund sein, dass er das nicht macht?
Title: Re: Problem mit openssl / trusted chain
Post by: white_rabbit on February 21, 2020, 05:32:44 pm
Ich habe den Verdacht, dass ich die auf der OPNSense-FW durch das LE-Plugin erzeugten Dateien unter
Code: [Select]
/var/etc/acme-client/home/server.meine-domain.de
nicht problemlos weiter verwenden kann? So ist z.B. in der Datei "fullchain.cer" eine Leerzeile, die da IMHO nicht stehen darf?
Wenn ich diese Dateien auf den Host, für den sie erstellt wurden, kopiere und dort anschließend einen check mit openssl mache, erhalte ich jedenfalls die o.g. Fehlermeldungen. Die Chain ist unterbrochen/nicht vollständig.

Kann das jemand bestätigen?

Title: Re: Problem mit openssl / trusted chain
Post by: fabian on February 21, 2020, 06:42:42 pm
Wie gesagt, ich lade diese Datei auf fabian-franz.eu - daher weiß ich dass die geht.
Title: Re: Problem mit openssl / trusted chain
Post by: white_rabbit on February 21, 2020, 07:45:44 pm
Bei dir ist die Chain aber auch in Orndung:

Code: [Select]
---
Certificate chain
 0 s:CN = fabian-franz.eu
   i:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
 1 s:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
   i:O = Digital Signature Trust Co., CN = DST Root CA X3
---


Ich verstehe einfach nicht, warum das hier nicht klappt!
Title: Re: Problem mit openssl / trusted chain
Post by: fabian on February 21, 2020, 09:00:21 pm
ist so konfiguriert (ich verwende lieber die PEM Dateiendung - ist aber das selbe Dateiformat):

Code: [Select]
ssl_certificate_key /path/to/key.pem;
ssl_certificate /path/to/fullchain.pem;
die fullchain sieht so aus:
Code: [Select]
-----BEGIN CERTIFICATE-----
MIIFaj...
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIEkjC...
-----END CERTIFICATE-----
Ich würde da wirklich an deiner Stelle mal die Server config prüfen. Vielleicht musst du CA chain und Serverzertifikat getrennt angeben.