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.cnf
und 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.cnf
und 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 -nodes
Option entfernen .
Unterzeichnen Sie die Anfrage schließlich mit Ihrer neuen Stammzertifizierungsstelle und den Erweiterungen aus der server.cnf
Datei ( 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_serial
Option.
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.key
und server.cer
zu Ihrem Webserver hinzu und konfigurieren Sie es entsprechend.