PKI mit OpenSSL - Vertrauen zum RootCA auf dem Intermediate-CA herstellen?
Hallo Leute,
ich möchte eine PKI in unserer Firma aufbauen und mir schwebt vor dies mit 2 Ubuntu-Servern und OpenSSL zu realisieren.
Ich habe auch bereits erste Versuche in meiner Testumgebung versucht und ein SelfSigned-Zertifikat auf dem RootCA erstellt und ein Intermediate-CA auf dem zweiten Server welches ich auf dem RootCA signiert habe (Standard-Vorgang bei einer PKI).
Ich habe eine Anleitung als auch ChatGPT befolgt und am Ende ein IIS-Zertifikat auf dem Intermediate-CA erstellt bzw. Signiert welches leider nicht geklappt hat (Browser meldet nicht vertrauenswürdige Webseite).
Auf dem Windows-11-Client:
Das CRT des root-CA wurde in 'vertrauenswürdige Stammzertifizierungsstellen' und das Intermediate-CA in den 'vertrauenswürdigen Zwischenzertifizierungsstellen' gespeichert.
Auf dem IIS-Server:
Ebenfalls in beide Zertifizierungsstellen jeweils das entsprechende PEM (als CRT-Datei) 'installiert' wie beim Windows-11-Client. Zusätzlich natürlich das signierte Server-Zertifikat auf die Default-Site 'gebunden'.
Ich habe mich mal mit der Windows-PKI befasst und dort hat das alles geklappt, mit der Ubuntu-PKI klappt das irgendwie nicht. Um Browser-Eigenarten erstmal beiseite zu legen (Firefox, Chrome und ähnliche benötigen die erweiterte Angaben und nutzen ihren eigenen Zertifikatsspeicher) habe ich die Tests mit Edge und IE gemacht.
Was mir bei all den Anleitungen und dem Vorgang mit ChatGPT aufgefallen ist:
Irgendwie fehlt mir die Vertrauensstellung zwischen RootCA und Intermediate-CA.
Ich übertrage zwar die Zertifizierungsanfrage des Intermediate-CA an den Root-CA und signiere es dort um anschliessend die CRT zurück zu transferieren um dort den Intermediate-CA damit auszustatten, aber ich sehe nirgends den Vorgang das der Root-CA auf dem Intermediate-CA bekannt gemacht wird und das diesem auch getraut werden soll?
Daher nun die Frage:
hat mir jemand eine korrekte Vorgehensweise / Anleitung parat die alles bis ins Detail 'abdeckt'?
Der Intermediate-CA muss doch auch die CRT vom RootCA besitzen und der muss doch auch irgendwie vertraut werden, richtig?
Hier ist das was ich mache:
Auf dem Root-CA:
Und hier komme ich ins grübeln: wieso sollte, laut Anleitung jedoch korrekte vorgehensqweise, der Intermediate-CA dem intermediate-ca.crt vertrauen? Der weiß doch gar nicht das dem RootCA vertraut werden kann? Ausserdem weiß ich nicht ob das einfache Ablegen der CRT in /etc/ssl/certs ausreicht um das Zertifikat 'installiert' zu haben?
Am Ende müssen dann die RootCA.crt und die IntermediateCA.crt auf den Clients und dem Server in die entsprechenden Zertifikatsspeicher (wie Eingangs beschrieben) abgleegt ('installiert') werden und dann sollte das ja klappen. Klappt jedoch nicht und einer meiner möglichen Fehlerursachen sind eben diese Vertrauensstellung zwischen Root-CA und Intermediate-CA.
Ich hoffe auch eure Hilfe. Eine korrekte Anleitung oder auch Erklärungen zum Vorgang wird mir sicherlich immens helfen.
Schon einmal im voraus vielen Dank für eure Mühe und sei es nur für das Lesen meines Beitrages bis hierher.
ich möchte eine PKI in unserer Firma aufbauen und mir schwebt vor dies mit 2 Ubuntu-Servern und OpenSSL zu realisieren.
Ich habe auch bereits erste Versuche in meiner Testumgebung versucht und ein SelfSigned-Zertifikat auf dem RootCA erstellt und ein Intermediate-CA auf dem zweiten Server welches ich auf dem RootCA signiert habe (Standard-Vorgang bei einer PKI).
Ich habe eine Anleitung als auch ChatGPT befolgt und am Ende ein IIS-Zertifikat auf dem Intermediate-CA erstellt bzw. Signiert welches leider nicht geklappt hat (Browser meldet nicht vertrauenswürdige Webseite).
Auf dem Windows-11-Client:
Das CRT des root-CA wurde in 'vertrauenswürdige Stammzertifizierungsstellen' und das Intermediate-CA in den 'vertrauenswürdigen Zwischenzertifizierungsstellen' gespeichert.
Auf dem IIS-Server:
Ebenfalls in beide Zertifizierungsstellen jeweils das entsprechende PEM (als CRT-Datei) 'installiert' wie beim Windows-11-Client. Zusätzlich natürlich das signierte Server-Zertifikat auf die Default-Site 'gebunden'.
Ich habe mich mal mit der Windows-PKI befasst und dort hat das alles geklappt, mit der Ubuntu-PKI klappt das irgendwie nicht. Um Browser-Eigenarten erstmal beiseite zu legen (Firefox, Chrome und ähnliche benötigen die erweiterte Angaben und nutzen ihren eigenen Zertifikatsspeicher) habe ich die Tests mit Edge und IE gemacht.
Was mir bei all den Anleitungen und dem Vorgang mit ChatGPT aufgefallen ist:
Irgendwie fehlt mir die Vertrauensstellung zwischen RootCA und Intermediate-CA.
Ich übertrage zwar die Zertifizierungsanfrage des Intermediate-CA an den Root-CA und signiere es dort um anschliessend die CRT zurück zu transferieren um dort den Intermediate-CA damit auszustatten, aber ich sehe nirgends den Vorgang das der Root-CA auf dem Intermediate-CA bekannt gemacht wird und das diesem auch getraut werden soll?
Daher nun die Frage:
hat mir jemand eine korrekte Vorgehensweise / Anleitung parat die alles bis ins Detail 'abdeckt'?
Der Intermediate-CA muss doch auch die CRT vom RootCA besitzen und der muss doch auch irgendwie vertraut werden, richtig?
Hier ist das was ich mache:
Auf dem Root-CA:
openssl req -new -x509 -days 3650 -keyout /etc/ssl/private/root-ca.key -out /etc/ssl/certs/root-ca.crt
openssl req -new -keyout /etc/ssl/private/intermediate-ca.key -out /etc/ssl/certs/intermediate-ca.csr
- 'intermediate-ca.csr' auf den Root-CA per SCP übertragen
openssl x509 -req -days 3650 -in /pfad/auf/root-ca-server/intermediate-ca.csr -CA /etc/ssl/certs/root-ca.crt -CAkey /etc/ssl/private/root-ca.key -CAcreateserial -out /pfad/auf/root-ca-server/intermediate-ca.crt
- 'intermediate-ca.crt' auf den Intermediate-CA per SCP übertragen und in /etc/ssl/certs speichern
Und hier komme ich ins grübeln: wieso sollte, laut Anleitung jedoch korrekte vorgehensqweise, der Intermediate-CA dem intermediate-ca.crt vertrauen? Der weiß doch gar nicht das dem RootCA vertraut werden kann? Ausserdem weiß ich nicht ob das einfache Ablegen der CRT in /etc/ssl/certs ausreicht um das Zertifikat 'installiert' zu haben?
Am Ende müssen dann die RootCA.crt und die IntermediateCA.crt auf den Clients und dem Server in die entsprechenden Zertifikatsspeicher (wie Eingangs beschrieben) abgleegt ('installiert') werden und dann sollte das ja klappen. Klappt jedoch nicht und einer meiner möglichen Fehlerursachen sind eben diese Vertrauensstellung zwischen Root-CA und Intermediate-CA.
Ich hoffe auch eure Hilfe. Eine korrekte Anleitung oder auch Erklärungen zum Vorgang wird mir sicherlich immens helfen.
Schon einmal im voraus vielen Dank für eure Mühe und sei es nur für das Lesen meines Beitrages bis hierher.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 21962156327
Url: https://administrator.de/contentid/21962156327
Ausgedruckt am: 13.11.2024 um 10:11 Uhr
6 Kommentare
Neuester Kommentar
Ggf. ist XCA etwas für dich bzw. deine Anforderung.
https://hohnstaedt.de/xca/
Es ist in allen Repositories enthalten auch bei Ubuntu (apt-cache search xca)
Gibt es u.a. auch in einer Portabel Version für die CA am Schlüsselbund (USB Stick).
Siehe zu der Thematik auch hier.
Klappt aber natürlich auch mit OpenSSL in der Regel immer problemlos.
https://www.baeldung.com/openssl-self-signed-cert
https://hohnstaedt.de/xca/
Es ist in allen Repositories enthalten auch bei Ubuntu (apt-cache search xca)
Gibt es u.a. auch in einer Portabel Version für die CA am Schlüsselbund (USB Stick).
Siehe zu der Thematik auch hier.
Klappt aber natürlich auch mit OpenSSL in der Regel immer problemlos.
https://www.baeldung.com/openssl-self-signed-cert
Hallo,
die Intermediate-CA führt in dieser Rolle keine Aktion aus, die Vertrauen in die Root-CA erfordert.
Das ist bei Windows auch nicht anders, nur erhält dort die Maschine automatisch dieses Vertrauen als Member der Domain, in die die Root-CA installiert werden muss. Du kannst auf dem Rechner der Intermediate-CA die Root-CA installieren, wie auf jedem anderen Rechner, ist aber nicht nötig.
Grüße
Richard
die Intermediate-CA führt in dieser Rolle keine Aktion aus, die Vertrauen in die Root-CA erfordert.
Das ist bei Windows auch nicht anders, nur erhält dort die Maschine automatisch dieses Vertrauen als Member der Domain, in die die Root-CA installiert werden muss. Du kannst auf dem Rechner der Intermediate-CA die Root-CA installieren, wie auf jedem anderen Rechner, ist aber nicht nötig.
Grüße
Richard
Nein, sie müssen im Allgemeinen der Root- und den Intermediate-CAs vertrauen, jedenfalls aber der Root-CA.
Wenn z.B. ein Client eine Webseite aufruft, bekommt er von einem korrekt konfigurierten Server das Webserver-Zertifkat und alle Intermediate-Zertifikate und validiert diese Kette in sich und gegen die Root-CA.
1. CSR am IIS erstellen
2. Am Intermediate-CA signieren
3. Zurück am IIS das CRT binden
4. Am Windows-Client im Zertifikatsspeicher "Vertrauensvolle Zwischenzertifizierungsstellen" das CRT des Intermediate-CA installieren und für den IE sollte dies dann genügen um korrekt zu funktionieren?
2. Am Intermediate-CA signieren
3. Zurück am IIS das CRT binden
4. Am Windows-Client im Zertifikatsspeicher "Vertrauensvolle Zwischenzertifizierungsstellen" das CRT des Intermediate-CA installieren und für den IE sollte dies dann genügen um korrekt zu funktionieren?
Auf den Windows-Clients spielst Du alle CAs in die passenden Speicher ein. Wenn das AD CS ersetzen soll, auch im AD (certutil -dspublish).
Also benötigt der Intermediate-CA keine 'vertrauensvolle Stammzertifizierungsstelle'?
Die Intermediate-CA nicht unbedingt, weil Du dort ja grundsätzlich keinen Web-Server aufrufst o.ä.
Sie hat ihr eigenes Zertifikat, dem sie nicht zu vertrauen braucht. Sie hat ja ihren privaten Schlüssel und kann Zertifikate signieren, denen sie auch nicht zu vertrauen braucht.
Je nach Zielsetzung würde ich den Weg korrigieren, weil Du noch recht wenig Erfahrung zu haben scheinst. Mit Tutorials zu AD CS wirst Du schneller und zuverlässiger zu einer korrekten PKI kommen. Es gibt z.B. MS-spezifische Erweiterungen, und Themen wie automatischer Abruf, CRL-Generierung, AIA/CDP sind noch gar nicht berührt.