„Beim Importieren eines Zertifikats fehlt der private Schlüssel oder ist ungültig“ in Google Chrome

„Beim Importieren eines Zertifikats fehlt der private Schlüssel oder ist ungültig“ in Google Chrome

Ich möchte meine Web-App auf https localhost testen. Leider scheint es unmöglich, die Zertifikatswarnung aus Chrome zu entfernen. Zuerst habe ich das Zertifikat wie folgt generiert:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/localhost-selfsigned.key -out /etc/ssl/certs/localhost-selfsigned.crt

Dann wollte ich es zu Chrome hinzufügen, Einstellungen > Erweitert > Zertifikate verwalten -> Importieren. Ich versuche, die zuvor generierte .crt-Datei zu importieren und erhalte nur Folgendes:

Fehler beim Zertifikatimport: Der private Schlüssel für dieses Client-Zertifikat fehlt oder ist ungültig.

Ich habe es gegoogelt, aber nichts Hilfreiches gefunden.

Ich habe auch versucht, das Flag „allow-insecure-localhost“ zu aktivieren und Chrome damit zu öffnen, --ignore-certificate-errorsaber es werden immer noch die Warnung und ein defektes https angezeigt.

Gibt es noch andere Möglichkeiten oder mache ich etwas falsch mit dem Zertifikat?

Antwort1

Ich denke, Sie versuchen möglicherweise, es dem falschen Zertifikatspeicher hinzuzufügen. Wenn Sie versuchen, es unter „Ihre Zertifikate“ hinzuzufügen, werden Sie Probleme haben. Diese Registerkarte dient zum Hinzufügen von Identitätszertifikaten; was Ihr Browser dem Server anbietet, um die Identität des Browsers festzustellen.

Basierend auf Ihrer Beschreibung denke ich, dass Sie möchten, dass Ihr Browser dem selbstsignierten Zertifikat vertraut, das sich auf Ihrem Server befindet. Wenn dies der Fall ist, müssen Sie es auf der Registerkarte „Behörden“ hinzufügen.

Antwort2

Was bei mir funktioniert hat, war

  • Einrichten einer Zertifizierungsstelle
  • mein eigenes Zertifikat mit dieser Zertifizierungsstelle signieren und dann
  • Importieren des CA-Schlüssels in Chrome (Behörden).

Ich habe das Verfahren vonDasAntwort auf SO.

Da es bei meinem speziellen Problem um die Bereitstellung von mehrstufigen Subdomänen ging, werde ich es aus diesem Blickwinkel betrachten.

Subdomänen:

  • bar.fooz.meinedomain.com
  • foo.fooz.meinedomain.com
  1. Werden Sie eine Zertifizierungsstelle
export CA=myca
# you probably want to have this in its own directory
mdkir /etc/ssl/$CA && cd /etc/ssl/$CA

# generate private key
openssl genrsa -des3 -out $CA.key 2048

# generate root certificate
openssl req -x509 -new -nodes -key $CA.key -sha256 -days 825 -out $CA.pem
  1. Erstellen von CA-signierten Zertifikaten
export NAME=fooz.mydomain.com
# if CA files were in a separate directory
cd .. && mkdir /etc/ssl/$NAME && cd /etc/ssl/$NAME

# generate private key
openssl genrsa -out $NAME.key 2048

# Create a certificate-signing request
# Once prompted, set FQDN to the value of $NAME
openssl req -new -key $NAME.key -out $NAME.csr

# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
# Optionally, add additional domains (I've added a subdomain here)
DNS.2 = foo.$NAME
DNS.3 = bar.$NAME
IP.1 = 192.168.0.13 # (Optional, but probably important), add an IP address (if the connection which you have planned requires it)
EOF

# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA $CA.pem -CAkey $CA.key -CAcreateserial -out $NAME.crt -days 825 -sha256 -extfile $NAME.ext
  1. Laden Sie die $CA.pemDatei herunter und importieren Sie sie als Behörde in Ihren Browser:
    1. Chrome settings (Settings > Privacy and Security > Security > Manage certificates > Authorities > Import). Check Trust this certificate for identifying websites
    2. Firefox: Preferences > Privacy and Security > Certificates > View Certificates > Authorities > import. Check Trust this CA to identify websites
  1. Starten Sie Ihren Browser neu (Firefox funktionierte ohne Neustart)

Antwort3

Chrome erwartet eine Datei im PKCS12-Format, die zum Speichern des Zertifikats, aller Zwischenzertifikate und des privaten Schlüssels in einer einzigen verschlüsselbaren Datei verwendet wird. Diese Dateien haben normalerweise die Erweiterungen .p12und .pfx.

Um eines zu generieren, verwenden Sie den folgenden Befehl

openssl pkcs12 -export -inkey ./sample.key -in ./sample.crt -out ./sample.p12

Dieser Befehl fragt nach einem Passwort, das wir uns merken müssen, um es beim Importieren der generierten p12Datei in Chrome zu verwenden.

verwandte Informationen