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