Warnung: Bevor Sie in das Minenfeld der Führung Ihrer eigenen Zertifizierungsstelle eintauchen, müssen Sie möglicherweise die Auswirkungen auf die Sicherheit untersuchen!
Aber wenn Sie müssen, lesen Sie weiter für eine schnelle und schmutzige Zertifizierungsstelle, die Sie https://localhost/ohne Warnmeldung erhalten wird ...
Erstellen Sie die folgende Textdatei:
# OpenSSL configuration for Root CA
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = Test Root CA
[ x509_ext ]
basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
Speichern unter root.cnfund generieren Sie die Anfrage mit:
$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf
Dadurch werden Ihr Stammzertifizierungsstellenzertifikat ( root.cer) und Ihr privater Stammzertifizierungsstellenschlüssel ( root.key) erstellt, die Sie privat halten müssen. Sie werden aufgefordert, ein Kennwort für den privaten Schlüssel einzugeben. Stellen Sie sicher, dass Sie ein sicheres Kennwort auswählen.
Erstellen Sie nun eine Konfigurationsdatei für das Serverzertifikat:
# OpenSSL configuration for end-entity cert
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = localhost
[ x509_ext ]
keyUsage=critical,digitalSignature,keyAgreement
subjectAltName = @alt_names
# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com
Speichern Sie es als server.cnfund generieren Sie die Anfrage mit:
openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf
Das Obige generiert einen weiteren privaten Schlüssel ( server.key), den Sie schützen müssen. In diesem Fall ist der Schlüssel nicht kennwortgeschützt. Sie können jedoch ein Kennwort hinzufügen, indem Sie die -nodesOption entfernen .
Unterzeichnen Sie die Anfrage schließlich mit Ihrer neuen Stammzertifizierungsstelle und den Erweiterungen aus der server.cnfDatei ( der Einfachheit halber):
$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext
Hinweis: Wählen Sie eine beliebige Zufallszahl für die -set_serialOption.
Sie werden nach dem Kennwort gefragt, das Sie beim Generieren der Stammzertifizierungsstelle eingegeben haben.
Ein Serverzertifikat ( server.cer) wird generiert.
Fügen Sie nun das Zertifikat der Stammzertifizierungsstelle ( root.cer) zum Firefox-Speicher für Vertrauensanker hinzu und führen Sie einen Test aus mit:
$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www
Hinweis: Möglicherweise treten Fehler auf, wenn auf Port 443 bereits ein Server ausgeführt wird. In diesem Fall stoppen Sie entweder den laufenden Server oder ändern Sie die oben angegebene Portnummer in einen anderen nicht verwendeten Port.
Wenn Sie Naviate zu https://localhost(oder https://localhost:<port>wenn Sie die Portnummer oben geändert) mit Firefox, sollten Sie keine Warnung , jetzt und mit einer Liste von Chiffren Ihre Installation von OpenSSL anbieten kann präsentiert werden.
Wenn Sie mit den Ergebnissen zufrieden sind, fügen Sie das server.keyund server.cerzu Ihrem Webserver hinzu und konfigurieren Sie es entsprechend.