hkrischeu
Goto Top

Zertifikatsanforderung aus Debian in Windows AD CA signieren und als pfx zusammenfügen

Vielleich kann es jemand gebrauchen ...
Zertifikatsanforderungen unter Linux erstellen
Diese dann auf dem Windows AD signieren lassen
Eventuell über GPO verteilen
Und dann ein pfx File erstellen mit Passwortschutz für den privaten Key

Beim erstellen der Zertifikatsanfrage sieht mein Befehl so aus: (aktualisiert)

/usr/bin/openssl req -new -newkey RSA:4096 -keyout $FQDN1.key -out $FQDN1.csr -nodes \
        -subj "/C=DE/O=asdf\ asdf\ GmbH/OU=IT/ST=Bayern/L=Alzenau/emailAddress=d.asdf@asdf-asdf.de/CN=$FQDN" \  
        -addext "basicConstraints = critical,CA:false" \  
        -addext "keyUsage=critical,digitalSignature,keyEncipherment" \  
        -addext "extendedKeyUsage=serverAuth,clientAuth" \  
        -addext "subjectAltName=DNS:$FQDN"  

Man kopiert dann die Datei, z.B. per WinSCP auf den WindowsServer AD mit CA z.B. unter C:\temp\
Ich habe die Zertifikatsvorlage Webserver auf dem WindowsAD kopiert und dort die Gültigkeit auf 365 Tage geändert und die Vorlage anders benannt.
In der Adminshell dann:
certreq -attrib "CertificateTemplate:Webserver1Jahr" -submit ippxsrv.csr  

Ich hatte ein Passwortproblem beim Importieren des PFX Zertifikates.
Hier hat das geholfen
openssl pkcs12 -export -legacy -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -out /$VERZEICHNIS/$FQDN1.pfx -inkey /$VERZEICHNIS/$FQDN1.key -in /$VERZEICHNIS/$FQDN1.cer

Man kann auch ohne "-export -legacy -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES". Das ging aber nur bei Win10 PCs und nicht auf dem Windows Server. Auf dem Win10PC kann man dann wieder exportieren und auf dem Windows Server importieren. Dann passt auch die Verschlüsselung, die der Server vorraussetzt.


Ich freue mich auf Anregungen ....

Grüße
Heinz

Content-ID: 21283193169

Url: https://administrator.de/tutorial/zertifikatsanforderung-aus-debian-in-windows-ad-ca-signieren-und-als-pfx-zusammenfuegen-21283193169.html

Ausgedruckt am: 21.12.2024 um 12:12 Uhr

8030021182
8030021182 22.11.2023 aktualisiert um 10:03:02 Uhr
Goto Top
basicConstraints = critical,CA:true,pathlen:0"
Eine CA bei einer CA signieren lassen macht hier ehrlich gesagt keinen Sinn. Dafür hat man ja schon die Windows CA.
Wenn es ein selbstsigniertes Zertifikat werden soll dann OK, aber dafür braucht es dann keine CA zum Signieren, oder wenn es eine subordinate CA werden soll, dafür fehlt dann aber die Extension zum Signieren von Zertifikaten.

Evt. auch für dich interessant um automatisiert Zertifikate mit openssl via SCEP abzurufen.
https://github.com/certnanny/sscep


Gruß Katrin
hkrischeu
hkrischeu 22.11.2023 aktualisiert um 10:04:06 Uhr
Goto Top
Hi Karin11,
Danke für die Rückmeldung.
Ich kann es zum Testen mal aus den Parameterwust rausnehmen.
Grundsätzlich funktioniert es jedenfalls. Ich kämpfe aber noch mit dem swyx telefonserver um das dort einzubinden.
Melde mich dann noch mal.
p.s. Soll der Parameter dann ganz weg, oder

basicConstraints = critical,CA:true,pathlen:1

Den Eintrag hatte ich irgendwo aus den AppleKriterien für das Zertifikat gesehen
8030021182
8030021182 22.11.2023 aktualisiert um 10:07:29 Uhr
Goto Top
Zitat von @hkrischeu:
p.s. Soll der Parameter dann ganz weg, oder
Entweder das dann wird es automatisch ein Endinstanz-Cert, oder explizit angeben das es keine CA werden soll
basicConstraints = critical,CA:FALSE
hkrischeu
hkrischeu 22.11.2023 um 10:12:33 Uhr
Goto Top
Also dann so, oder?
-addext "basicConstraints = critical,CA:false,pathlen:0" \   
8030021182
8030021182 22.11.2023 aktualisiert um 10:20:11 Uhr
Goto Top
Nein, die Pfadlänge gibt es nur wenn es eine CA ist (nur dort macht er Sinn!), also weg mit dem pathlen.
-addext "basicConstraints = critical,CA:false"     

Lesenswert
https://www.openssl.org/docs/man1.0.2/man5/x509v3_config.html
Basic Constraints.
This is a multi valued extension which indicates whether a certificate is a CA certificate. The first (mandatory) name is CA followed by TRUE or FALSE. If CA is TRUE then an optional pathlen name followed by an non-negative value can be included.
hkrischeu
hkrischeu 22.11.2023 um 10:32:03 Uhr
Goto Top
OK. Ich schau mal ob die iPADs damit zurecht kommen.
8030021182
8030021182 22.11.2023 aktualisiert um 10:34:35 Uhr
Goto Top
Zitat von @hkrischeu:

OK. Ich schau mal ob die iPADs damit zurecht kommen.

So lange du das CA-Cert als Profil importiert und als vertrauenswürdig markiert hast, kein Problem.
hkrischeu
hkrischeu 22.11.2023 aktualisiert um 10:42:15 Uhr
Goto Top
Ich hab die Cert-Anfrage über den Befehl auf dem Windows Server signiert. Die Vorlage ist auf 365 Tage gesetzt.
certreq -attrib "CertificateTemplate:Webserver1Jahr" -submit ippxsrv.csr  

Was meinst du mit "das CA-Cert als Profil importiert und als vertrauenswürdig markiert" ?
Die iPads werden über Intunes / Azure verwaltet. Dort schieb ich die signierten Zertifikate hoch und verteil die. Meistens ging das für die Appledinger nicht, weil irgendein Attribut gefehlt hatte.

Die Androids gingen immer.
8030021182
8030021182 22.11.2023 um 10:45:55 Uhr
Goto Top
8030021182
8030021182 22.11.2023 aktualisiert um 12:46:36 Uhr
Goto Top
Ach ja, ist zwar kein Muss, aber beim Export als PFX best practice bei selbstsignierten CAs am besten die komplette chain inkl. CA Cert inkludieren, also zusätzlich den Export mit den Parametern
-chain -CAfile ca.pem
hkrischeu
hkrischeu 27.11.2023 aktualisiert um 09:15:30 Uhr
Goto Top
Hi @8030021182,
Super Idee mit dem Root-Zertifikat und der Zertifikatszusammenführung.

openssl pkcs12 -password pass:$PASSWORTZUMENTSCHLUESSELN -export -legacy -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -out /$VERZEICHNIS/$FQDN1.pfx -inkey /$VERZEICHNIS/$FQDN1.key -in /$VERZEICHNIS/$FQDN1.cer -chain -CAfile RootCAsvr006.cer
Ich bekomme aber folgende Fehlermeldung.
Error loading file RootCAsvr006.cer
80FB7CE7CC7F0000:error:05800088:x509 certificate routines:X509_load_cert_crl_file_ex:no certificate or crl found:../crypto/x509/by_file.c:251:
Kennst du die?
Ich hab das Root-Zertifikat aus dem Windows-Server kopiert und direkt in das zu erstellende Zertifikatsverzeichnis auf dem LinuxServer kopiert.

Grüße
Heinz
hkrischeu
hkrischeu 27.11.2023 um 09:09:10 Uhr
Goto Top
Ich hab mir das Zertifikat vom WindowsServer RootCA über die DOS-Shell besorgt:
certutil -ca.cert ca_name.cer
hkrischeu
hkrischeu 27.11.2023 um 09:22:17 Uhr
Goto Top
Da der Linux-PC nur zum erstellen ist, kann es sein, daß folgendender Parameter hier nicht funktionierne kann?

-chain
if this option is present then an attempt is made to include the entire certificate chain of the user certificate. The standard CA store is used for this search. If the search fails it is considered a fatal error.
8030021182
8030021182 27.11.2023 aktualisiert um 09:45:28 Uhr
Goto Top
Zitat von @hkrischeu:

Da der Linux-PC nur zum erstellen ist, kann es sein, daß folgendender Parameter hier nicht funktionierne kann?

-chain
if this option is present then an attempt is made to include the entire certificate chain of the user certificate. The standard CA store is used for this search. If the search fails it is considered a fatal error.

Doch das geht in Kombination mit dem zweiten Parameter -CAfile welcher den Store als Datei angibt!

-CAfile file
CA storage as a file.

Nur wenn dieser Parameter fehlt sucht openssl im Linux Cert-Store nach der CA. Und wenn dort dann die CA fehlt wird ein Fehler geworfen.

Also immer das CA Cert mittels CAfile.Parameter mitgeben dann bist du Safe.
hkrischeu
hkrischeu 27.11.2023 aktualisiert um 09:45:53 Uhr
Goto Top
Hi Katrin11,
ich hab das mal so gemacht. Funktioniert ohne den -chain
openssl pkcs12 -password pass:$PASSWORTZUMENTSCHLUESSELN -export -legacy -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -out /$VERZEICHNIS/$FQDN1.pfx -inkey /$VERZEICHNIS/$FQDN1.key -in /$VERZEICHNIS/$FQDN1.cer -CAfile RootCAsvr006.cer
8030021182
8030021182 27.11.2023 aktualisiert um 09:48:00 Uhr
Goto Top
Ist aber nicht das selbe.
8030021182
8030021182 27.11.2023 aktualisiert um 10:00:22 Uhr
Goto Top
> no certificate or crl found:
Format des CA certs passt nicht ...

Du solltest dir erst mal von Grund auf die wichtigsten Grundlagen einer CA beibringen, denn sonst fängst du x mal von vorne an..

Planung ist bei einer richtigen CA-Struktur die halbe Miete.

Und das CA Certs nur in den CA Store kopieren reicht nicht, der Store muss aktualisiert werden!
hkrischeu
hkrischeu 27.11.2023 um 10:15:24 Uhr
Goto Top
@8030021182 - Ich bin an den Grundlagen dran. Ja, ich komme aus dem Tal der Ahnungslosen -ich weiss face-wink
Format des CA cert passt nicht ... --> Hab ich mir so geholt, vom Windows Server: certutil -ca.cert ca_name.cer
Planung: Ja, ist vorhanden gewesen. Bin hier neu.
Ja, ich hab mit den Zertifikaten angefangen und mache es halt. Ich finde es aber top, daß du mir da weiterhilfst.

Warhscheinlich ist das grundsätzlich Konstrukt, daß die Zertifikatsanfrage auf dem Linux-Server für alle erstellt wird, die Signierung über die WindowsCA kommt und dann das pfx-File auf dem Linux-Server zusammen gebaut wird eh --> exotisch.

Wie muß denn das Format exportiert werden?
hkrischeu
hkrischeu 27.11.2023 um 10:57:37 Uhr
Goto Top
btw. Ich hab das PFX-File auf die Swyx-Telefonanlage übertragen - funktioniert.