SSL-Zertifikatsfehler bei selbst-signierten Zertifikaten trotz importierter CA

Hallo!

Hier mein Vorgehen:

Ich wollte das Linuxmuster-Skript nicht direkt verändern, deshalb habe ich mir in /root/ ein neues Verzeichnis cert_new angelegt.

cd /root
mkdir cert_new
cd cert_new

Dann habe ich das Linuxmuster-Skript kopiert,
cp /usr/share/linuxmuster/scripts/create-ssl-cert.sh .

und das von @tjordan beschriebene extension file angelegt und auf meine Schule angepasst.
nano ssl-ext.conf

[v3_req]
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:10.16.1.1, DNS:server.sbbs-leinefelde.lokal, DNS:server

Dann das Skript angepasst:
nano create-ssl-cert.sh

Inhalt:

#!/bin/sh
# create ssl certificate script
# for linuxmuster.net
# 04.11.08 Thomas Schmitt <tschmitt@linuxmuster.de>
#
# 10.11.22 modified by Michael Wehr to generate certificate including v3_req extensions
# thread: https://ask.linuxmuster.net/t/ssl-zertifikatsfehler-bei-selbst-signierten-zertifikaten-trotz-importierter-ca/9021

# modify this to your needs
days=3650
country="DE"
state="TH"
location="Leinefelde"
schoolname="sbbs_eichsfeld"
section="linuxmuster.net"
[ -z "$myname" ] && myname="server.sbbs-leinefelde.lokal"
mymail="administrator@sbbs-leinefelde.lokal"

# from here on nothing has to be modified
[ -z "$SSLDir" ] && SSLDir=/root/cert_new/private
SSLCertificateFile=$SSLDir/server.crt
SSLCertificateKeyFile=$SSLDir/server.key
SSLCertificateCSRFile=$SSLDir/server.csr
SSLPemFile=$SSLDir/server.pem

echo
echo "################################################################"
echo "############## creating selfsigned certificate #################"
echo "################################################################"
echo
echo "Enter your fully qualified ServerName at the Common Name prompt."
echo
openssl genrsa -out $SSLCertificateKeyFile 1024
chmod 600 $SSLCertificateKeyFile
echo -e "$country\n$state\n$location\n$schoolname\n$section\n$myname\n$mymail\n\n\n" | openssl req -new -key $SSLCertificateKeyFile -out $SSLCertificateCSRFile
openssl x509 -req -days $days -sha256 -in $SSLCertificateCSRFile -signkey $SSLCertificateKeyFile -out $SSLCertificateFile -extensions v3_req -extfile ssl-ext.conf
mv -f $SSLPemFile $SSLPemFile.old 2> /dev/null 1>/dev/null
cp $SSLCertificateKeyFile $SSLPemFile
cat $SSLCertificateFile >> $SSLPemFile
if [ "$SSLDir" = "/root/cert_new/private" ]; then
  chmod 640 $SSLPemFile
  chown root:ssl-cert $SSLPemFile
  chmod 750 $SSLDir
  chown root:ssl-cert $SSLDir
fi
echo
echo "ssl certificate was created in $SSLDir and is $days days valid."
echo

exit 0

Die Zeilen [ -z "$SSLDir" ] && SSLDir=/root/cert_new/private und if [ "$SSLDir" = "/root/cert_new/private" ]; then zu verändern ist vermutlich nicht wirklich nötig, aber ich wollte nicht, dass meine alten Zertifikate einfach so überschrieben werden. Deshalb der neue Speicherort im home von root.

Die entscheidende Änderung ist der Einbau der von Thomas vorgeschlagenen zusätzlichen Parameter in der Zeile zum Erzeugen der Zertifikate (-sha256 und -extensions v3_req -extfile ssl-ext.conf):

openssl x509 -req -days $days -sha256 -in $SSLCertificateCSRFile -signkey $SSLCertificateKeyFile -out $SSLCertificateFile -extensions v3_req -extfile ssl-ext.conf

Danach kann man das Skript ausführen und erhält im Unterordner private die neuen Zertifikate.
./create-ssl-cert.sh

Nachdem ich ein Backup der alten Zertifikate im Ordner /etc/ssl/private/ erstellt hatte, habe ich sie durch die neuen Zertifikate ersetzt und den Server neu gestartet. Ich habe bisher keine negativen Auswirkungen an unserem Server durch die Änderung feststellen können. Trotzdem geschieht das Ganze natürlich auf eigenes Risiko. Bitte erstellt unbedingt vorher ein Backup/Snapshot usw. Ich kann keine Verantwortung übernehmen, falls etwas schief läuft.

Anschließend ist noch die Windows-Seite zu bearbeiten:
Dafür importiert man das server.crt (wie bisher auch) in den Windows-Zertifikatsspeicher für Vertrauenswürdige Stammzertifizierungsstellen. IE, Edge und Chrome sollten dann keinen Zertifikatsfehler mehr anzeigen.

Firefox verwendet normalerweise seinen eigenen Zertifikatsspeicher. Aber dort konnte ich das Zertifikat leider nicht installieren. Es half schließlich nur, über die GPOs für Firefox einzustellen, dass er ebenfalls den Windows Zertifikatsspeicher verwenden soll. Danach wurde auch vom Firefox das importierte Zertifikat akzeptiert und die Fehlermeldungen waren Geschichte. Zum Schluss natürlich nicht vergessen ein neues Image zu erstellen.

Ich hoffe ich habe keinen Schritt vergessen und konnte helfen das Problem auch für andere zu lösen. Wenn noch etwas unklar ist, fragt gerne nach.

LG

Michael

1 „Gefällt mir“