GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

OpenSSL-Tutorial:Wie funktionieren SSL-Zertifikate, private Schlüssel und CSRs?

Einführung

Ursprünglich 1994 von Netscape entwickelt, um die E-Commerce-Fähigkeiten des Internets zu unterstützen, hat Secure Socket Layer (SSL) einen langen Weg zurückgelegt. Inmitten all der Cyberangriffe sind SSL-Zertifikate zu einer regelmäßigen Notwendigkeit für jede Live-Website geworden.

Obwohl Secure Socket Layer (SSL) und Transport Socket Layer (TLS) ziemlich allgegenwärtig geworden sind, nehmen wir uns einen kurzen Moment Zeit, um zu erklären, was sie tun und wie sie es tun.

Überspringen Sie nicht das OpenSSL-Tutorial Abschnitt.

Was ist ein SSL-Zertifikat? Wie funktioniert SSL?

Ein Secure Socket Layer (SSL)-Zertifikat ist ein Sicherheitsprotokoll, das Daten zwischen zwei Computern durch Verschlüsselung sichert.

Typischerweise werden SSL-Zertifikate auf Webseiten verwendet, die sensible Daten von Endbenutzern übertragen und empfangen, wie z. B. Sozialversicherungsnummer, Kreditkartendetails, Privatadresse oder Passwort. Online-Zahlungsformulare sind ein gutes Beispiel und verschlüsseln normalerweise die oben genannten sensiblen Informationen mit 128- oder 256-Bit-SSL-Technologie.

SSL-Zertifikate stellen die Identität eines Remote-Computers sicher, meistens eines Servers, bestätigen aber auch die Identität Ihres Computers gegenüber dem Remote-Computer, um eine sichere Verbindung herzustellen. Die Sicherheit des Internets war schon immer keine Einbahnstraße und dank der SSL-Verschlüsselung "schüttelt" der Server Ihrem PC die Hand und beide Seiten wissen, mit wem sie kommunizieren.

Was ist der Unterschied zwischen TLS und SSL?

Es gibt keine . Transport Layer Security (TLS) ist eine aktualisierte Version von Secure Socket Layer (SSL). Obwohl die meisten sicheren Verbindungen über TLS-Protokolle erfolgen, nennen es die Leute immer noch SSL. In diesem Fall kann man mit Sicherheit sagen, dass sich alte Gewohnheiten nur schwer ablegen lassen.

Woher weiß ich, ob eine Webseite mit SSL gesichert ist?

Als Internetnutzer ist Ihnen wahrscheinlich ein Vorhängeschloss aufgefallen und die Website-Infoleiste in Ihrem Webbrowser grün werden, sowie das https Verbindungsprotokoll.

Das ist Ihr Browser, der Sie darüber informiert, dass eine Website mit SSL-Verschlüsselung gesichert ist. Durch Klicken auf die Website-Infoleiste erhalten Sie zusätzliche Details zur Verbindung sowie Einblicke in das SSL-Zertifikat selbst.

Warum brauche ich ein SSL-Zertifikat?

Nehmen wir ein Beispiel aus dem wirklichen Leben.

Sie sind ein E-Commerce-Site-Besitzer, der gerade einen Server mit phoenixNAP gemietet und ein paar neue E-Commerce-Shops gestartet hat. Sie möchten, dass sich Ihre Besucher beim Besuch Ihres E-Stores sicher fühlen und vor allem nicht zögern, sich anzumelden und einen Kauf zu tätigen.

Ein SSL-Zertifikat und eine HTTPS-Verbindung schaffen Verbrauchervertrauen. Die E-Commerce-Branche ist eng mit dem Vertrauen der Verbraucher verbunden, und wir könnten sogar sagen, dass Ihr Unternehmen davon abhängt, dass sich Ihre Kunden während des gesamten Kauferlebnisses sicher fühlen.

Abgesehen von den offensichtlichen Sicherheitsgründen verbessert ein SSL-Zertifikat die SEO und das Google-Ranking Ihrer Website und baut Kundenvertrauen auf, was folglich die Gesamtumwandlungsraten verbessert.

Wem das noch nicht reicht, um ein SSL-Zertifikat für seine Domain in Betracht zu ziehen, der wird Sie sicher von Google überzeugen. Ab Juli 2018 kennzeichnet Google nämlich jede Website ohne SSL als unsicher.

Wo erhalte ich ein SSL-Zertifikat?

SSL-Zertifikate werden von einer Zertifizierungsstelle (CA) verifiziert und ausgestellt. Sie bewerben sich, indem Sie auf Ihrem Server eine CSR mit einem Schlüsselpaar generieren, das idealerweise das SSL-Zertifikat enthält. Der CSR enthält wichtige Organisationsdetails, die von der Zertifizierungsstelle überprüft werden.

  1. Generieren Sie eine CSR und ein Schlüsselpaar lokal auf Ihrem Server. Das Schlüsselpaar besteht aus einem öffentlichen und einem privaten Schlüssel.
  2. Senden Sie die CSR und den öffentlichen Schlüssel an eine Zertifizierungsstelle, die Ihre rechtliche Identität überprüft und ob Sie die im Antrag eingereichte Domain besitzen und kontrollieren. Die Zertifizierungsstelle führt eine Überprüfung Ihrer Organisation durch und validiert, ob die Organisation an dem in der CSR angegebenen Standort registriert ist und ob die Domäne existiert.
  3. Nach der Verifizierung erhält die Organisation eine Kopie ihres SSL-Zertifikats mit Geschäftsdetails sowie den öffentlichen Schlüssel. Die Organisation kann nun das Zertifikat auf ihrem Server installieren.
  4. Wenn eine Zertifizierungsstelle das Zertifikat ausstellt, bindet es sich an das "vertrauenswürdige Stammzertifikat" einer Zertifizierungsstelle. Stammzertifikate werden in jeden Browser eingebettet und mit individuell ausgestellten Zertifikaten verbunden, um eine HTTPS-Verbindung herzustellen.

SSL-Zertifikatstypen

Stellen Sie sicher, dass Sie eine Zertifizierungsstelle auswählen, die den von Ihnen benötigten Zertifikattyp unterstützt. Der Einfachheit halber finden Sie unten eine Beschreibung der einzelnen Zertifikatstypen:

Einzeldomänen-SSL-Zertifikat

Dieser Typ soll für eine einzelne Domain verwendet werden und bietet keine Unterstützung für Subdomains. Wenn das Zertifikat beispielsweise für www.phoenixnap.com verwendet werden soll, unterstützt es keine anderen Domänennamen.

Mehrere Domänen (SAN/UC-Zertifikate)

Für zahlreiche Domänen und Subdomänen werden mehrere Domänenzertifikate verwendet. Neben dem FQDN können Sie Unterstützung für andere (Sub-)Domains hinzufügen, indem Sie sie dem Subject Alternative Name Field hinzufügen. Beispielsweise kann ein SAN-Zertifikat die Domäne www.phoenixnap.com, ihre Unterdomäne help.phoenixnap.com sowie eine weitere Domäne (z. B. www.examplesite.com) enthalten.

Wildcard-Zertifikat

Wildcard-Zertifikate können für eine Domain inklusive aller Subdomains verwendet werden. Der Hauptunterschied besteht darin, dass Wildcard-Zertifikate nicht für einen bestimmten FQDN ausgestellt werden, sondern für eine Vielzahl von Subdomains verwendet werden. Beispielsweise könnte ein auf *.phoenixnap.com ausgestelltes Wildcard-Zertifikat für eine Vielzahl von Subdomains unter der Hauptdomain www.phoenixnap.com verwendet werden, wie in der Abbildung unten zu sehen.

SSL-Zertifikat-Validierungsstufen

Als Reaktion auf die wachsende Nachfrage nach Zertifikaten verfügen CAs über diversifizierte Zertifikatvalidierungsebenen. Einige Organisationen verwenden SSL nur zur Verschlüsselung, während andere ihren Kunden zeigen möchten, dass sie ein vertrauenswürdiges Unternehmen sind. Unterschiedliche Anforderungen haben zu unterschiedlichen Zertifikatvalidierungsstufen geführt.

Domain-Validierung (DV SSL)

Diese Art von SSL-Zertifikat ist ideal zum Sichern von Blogs, Social-Media-Apps und persönlichen Websites. Die Zertifizierungsstelle garantiert nicht die Identität einer Organisation, und es wird nur der Domänenbesitz verifiziert.

Erweiterte Validierung (EV SSL)

Die Zertifizierungsstelle überprüft den Domänenbesitz und führt eine gründliche Untersuchung der mit dem EV-Zertifikat verbundenen Organisation durch. Bei der Überprüfung einer erweiterten Validierungsanforderung werden strenge Regeln befolgt, und die Zertifizierungsstelle muss Folgendes überprüfen:

  1. Die Identität der Organisation stimmt mit offiziellen Aufzeichnungen überein.
  2. Die physische, rechtliche und operative Existenz des Unternehmens.
  3. Die Organisation hat exklusive Rechte zur Nutzung der im SSL-Zertifikat angegebenen Domain.
  4. Die Organisation hat die Ausstellung des EV-SSL-Zertifikats entsprechend autorisiert.

SSL-Zertifikat erstellen

Wie eine Zertifikatsignieranforderung generiert wird, hängt ausschließlich von der von Ihnen verwendeten Plattform und dem jeweiligen Tool Ihrer Wahl ab.

Wir werden eine CSR mit OpenSSL generieren .

OpenSSL ist ein weit verbreitetes Tool für die Arbeit mit CSR-Dateien und SSL-Zertifikaten und steht auf der offiziellen OpenSSL-Website zum Download bereit. Es ist ein Open-Source-Implementierungstool für SSL/TLS und wird auf etwa 65 % aller aktiven Internetserver verwendet, was es zum inoffiziellen Industriestandard macht.

Debian und Ubuntu

dpkg -l |grep openssl

Wenn das OpenSSL-Paket installiert ist, gibt es das folgende Ergebnis zurück:

ii libgnutls-openssl27:amd64   2.12.23-12ubuntu2.4   amd64   GNU TLS library - OpenSSL wrapper

ii openssl   1.0.1f-1ubuntu2.16   amd64   Secure Sockets Layer toolkit - cryptographic utility

Wenn Sie ein solches Ergebnis nicht sehen, führen Sie den folgenden Befehl aus, um OpenSSL zu installieren:

apt-get install openssl

Red Hat oder CentOS

Red Hat (Version 7.0 und höher) sollte mit einer vorinstallierten eingeschränkten Version von OpenSSL geliefert werden. Es bietet nur eingeschränkte Unterstützung für IDEA, RC5 und MDC2, daher möchten Sie möglicherweise die fehlenden Funktionen installieren. Weitere Informationen hierzu finden Sie in der OpenSSL-Dokumentation.

Um zu überprüfen, ob OpenSSL auf einem Yum-Server (z. B. Red Hat oder CentOS) installiert ist, führen Sie den folgenden Befehl aus:

rpm -qa | grep -i openssl

Dieser Befehl sollte das folgende Ergebnis zurückgeben:

openssl-1.0.1e-48.el6_8.1.x86_64
openssl-devel-1.0.1e-48.el6_8.1.x86_64
openssl-1.0.1e-48.el6_8.1.i686

Wenn Ihr Ausgabeformat abweicht, bedeutet dies, dass OpenSSL nicht auf Ihrem Server installiert ist. Führen Sie den folgenden Befehl aus, um OpenSSL zu installieren:

yum install openssl openssl-devel

Was ist ein Certificate Signing Request (CSR)?

Eine Zertifikatssignierungsanforderung (CSR) enthält die wichtigsten Informationen über Ihre Organisation und Domäne.

Normalerweise würden Sie eine CSR und ein Schlüsselpaar lokal auf dem Server generieren, auf dem das SSL-Zertifikat installiert wird. Dies ist jedoch keine strenge Regel. Sie können eine CSR und ein Schlüsselpaar auf einem Server generieren und das Zertifikat auf einem anderen installieren. Allerdings macht das die Sache komplizierter. Wir werden dieses Szenario ebenfalls behandeln.

Secure Socket Layer (SSL) verwendet zwei lange Folgen zufällig generierter Zahlen, die als privat bezeichnet werden und öffentliche Schlüssel . Ein öffentlicher Schlüssel steht der öffentlichen Domäne zur Verfügung, da er Teil Ihres SSL-Zertifikats ist und Ihrem Server bekannt gemacht wird.

Der private Schlüssel muss dem CSR entsprechen, mit dem er generiert wurde, und schließlich muss er mit dem Zertifikat übereinstimmen, das aus dem CSR erstellt wurde. Wenn der private Schlüssel fehlt, kann dies bedeuten, dass das SSL-Zertifikat nicht auf demselben Server installiert ist, der die Zertifikatsignierungsanforderung generiert hat.

Ein CSR enthält normalerweise die folgenden Informationen:

Parameter Beschreibung Beispielwert
Allgemeiner Name oder FQDN FQDN ist der vollständig qualifizierte Domänenname Ihrer Website. Es muss mit dem übereinstimmen, was der Benutzer in den Webbrowser eingibt. www.phoenixnap.com
Organisationsname (z. B. Firma) Der vollständige rechtsgültige Name Ihrer Organisation, einschließlich Suffixe wie LLC, Corp usw. PhoenixNAP, LLC
Name der Organisationseinheit Die Abteilung in Ihrer Organisation, die sich mit diesem Zertifikat befasst. NOC
Ortsname (z. B. Stadt) Die Stadt, in der sich Ihre Organisation befindet. Phönix
Staat/Region/Provinz (vollständiger Name) Das Bundesland oder die Region, in der sich Ihre Organisation befindet. Arizona
Ländercode (2-Buchstaben-Code) Das Land, in dem sich Ihre Organisation befindet. Wird immer als zweistelliger ISO-Code eingegeben. USA
E-Mail-Adresse E-Mail-Adresse, die zur Kontaktaufnahme mit dem Webmaster der Website verwendet wird. [E-Mail-geschützt]
Öffentlicher Schlüssel Ein automatisch erstellter Schlüssel, der mit der CSR generiert und in das Zertifikat aufgenommen wird. Ein verschlüsselter Textblock ähnlich dem privaten Schlüssel. Sehen Sie sich unten ein Beispiel für einen privaten Schlüssel an.

Bitte beachten Sie, dass bestimmte Namenskonventionen zu beachten sind. Organisationsname und Name der Organisationseinheit darf folgende Zeichen nicht enthalten:< > ~ ! @ # $ % ^ * / \ ( ) ?.,&

So erstellen Sie eine CSR

Certificate Signing Requests (CSR) werden mit einem Schlüsselpaar generiert – einem öffentlichen und einem privaten Schlüssel. Nur der öffentliche Schlüssel wird an eine Zertifizierungsstelle gesendet und in das SSL-Zertifikat aufgenommen und arbeitet mit Ihrem privaten Schlüssel zusammen, um die Verbindung zu verschlüsseln. Jeder kann auf Ihren öffentlichen Schlüssel zugreifen und er bestätigt, dass das SSL-Zertifikat authentisch ist.

Ein privater Schlüssel ist ein verschlüsselter Textblock, der zusammen mit dem Zertifikat die sichere Verbindung zwischen zwei Maschinen verifiziert. Es darf nicht öffentlich zugänglich sein und es sollte nicht an die Zertifizierungsstelle gesendet werden.

Die Integrität eines Zertifikats beruht darauf, dass nur Sie den privaten Schlüssel kennen. Wenn es jemals kompromittiert wurde oder verloren ging, verschlüsseln Sie Ihr Zertifikat so schnell wie möglich mit einem neuen privaten Schlüssel. Die meisten Zertifizierungsstellen berechnen Ihnen für diesen Service keine Gebühren.

Option 1:Erstellen Sie eine CSR

Das erste, was zu tun wäre, wäre, ein 2048-Bit-RSA-Schlüsselpaar lokal zu generieren. Dieses Paar enthält sowohl Ihren privaten als auch Ihren öffentlichen Schlüssel. Sie können das Java-Key-Tool oder ein anderes Tool verwenden, aber wir werden mit OpenSSL arbeiten.

Führen Sie den folgenden OpenSSL-Befehl aus, um einen öffentlichen und einen privaten Schlüssel mit einer Zertifikatsignierungsanforderung (CSR) zu generieren:

openssl req -out certificatesigningrequest.csr -new -newkey rsa:2048 -nodes -keyout privatekey.key

Sobald Sie eine CSR mit einem Schlüsselpaar erstellt haben, ist es schwierig zu erkennen, welche Informationen darin enthalten sind, da sie nicht in einem für Menschen lesbaren Format vorliegen. Sie können die CSR auf Ihrem Server einfach mit dem folgenden OpenSSL-Befehl entschlüsseln:

openssl req -in server.csr -noout -text

Es wird empfohlen, die CSR zu entschlüsseln und zu überprüfen, ob sie die richtigen Informationen über Ihre Organisation enthält, bevor sie an eine Zertifizierungsstelle gesendet wird. Es gibt viele CSR-Decoder im Internet, die Ihnen dabei helfen können, das Gleiche zu tun, indem Sie einfach den Inhalt Ihrer CSR-Datei kopieren und einfügen.

Der Einfachheit halber haben wir zwei (2) Online-CSR-Decoder-Tools aufgelistet:

  • SSL-Käufer
  • Roter Turmfalke

Option 2:Generieren Sie eine CSR für einen vorhandenen privaten Schlüssel

Es wird empfohlen, immer einen neuen privaten Schlüssel auszustellen, wenn Sie eine CSR generieren. Wenn Sie aus irgendeinem Grund eine Zertifikatsignierungsanforderung für einen vorhandenen privaten Schlüssel generieren müssen, verwenden Sie den folgenden OpenSSL-Befehl:

openssl req -out CSR.csr -key privateKey.key -new

Option 3:Generieren Sie eine CSR für ein vorhandenes Zertifikat und einen privaten Schlüssel

openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key

Ein unwahrscheinliches Szenario, in dem dies nützlich sein kann, ist, wenn Sie Ihr vorhandenes Zertifikat erneuern müssen, aber weder Sie noch Ihre Zertifizierungsstelle über die ursprüngliche CSR verfügen. Dadurch werden Informationen über Ihre Domäne und Ihr Unternehmen aus dem SSL-Zertifikat extrahiert und zum Erstellen einer neuen CSR verwendet, wodurch Sie Zeit sparen.

Option 4:Generieren Sie ein selbstsigniertes Zertifikat

Ein selbstsigniertes Zertifikat wird normalerweise für Test- und Entwicklungsumgebungen und in einem Intranet verwendet. Lassen Sie uns mit dem folgenden OpenSSL-Befehl ein selbstsigniertes Zertifikat generieren:

openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt

Die -days Parameter auf 365 gesetzt, was bedeutet, dass das Zertifikat für die nächsten 365 Tage gültig ist. Der -x509 -Parameter gibt an, dass es sich um ein selbstsigniertes Zertifikat handelt. Es wird eine temporäre CSR erstellt, die nur zum Sammeln der erforderlichen Informationen verwendet wird.

Zertifizierungsstellen verifizieren keine selbstsignierten Zertifikate. Sie sind daher nicht so sicher wie verifizierte Zertifikate. Wenn eine Zertifizierungsstelle das Zertifikat nicht signiert hat, zeigt jeder gängige Browser eine Fehlermeldung „nicht vertrauenswürdiges Zertifikat“ an, wie sie im Bild unten zu sehen ist.

Wenn Sie Ihren privaten Schlüssel nicht mit einem Passwort schützen möchten, können Sie die -nodes hinzufügen Parameter.

Option 5:Generieren Sie ein selbstsigniertes Zertifikat aus einem vorhandenen privaten Schlüssel und CSR

Wenn Sie bereits über eine CSR und ein privates Zertifikat verfügen und ein selbstsigniertes Zertifikat generieren müssen, verwenden Sie den folgenden Befehl:

openssl x509 \ -signkey domain.key \ -in domain.csr \ -req -days 365 -out domain.crt

Die -days Parameter auf 365 gesetzt, was bedeutet, dass das Zertifikat für die nächsten 365 Tage gültig ist.

Wie kopiert man den Inhalt einer CSR-Datei

Öffnen Sie das Verzeichnis, in dem sich Ihre CSR-Datei befindet. Geben Sie den folgenden Befehl ein:

sudo cat domain.csr

Ersetzen Sie domain mit dem FQDN-Parameter Ihrer CSR. Dieser Befehl zeigt den Inhalt der CSR-Datei an. Kopieren Sie den gesamten Inhalt, beginnend mit "BEGIN CERTIFICATE REQUEST" und endend mit "END CERTIFICATE REQUEST".

Zertifikatserneuerung – Alte CSRs nicht wiederverwenden

Nur weil einige Webserver die Verwendung alter CSRs für die Zertifikatserneuerung zulassen, bedeutet das nicht, dass Sie sie verwenden sollten. Generieren Sie aus Sicherheitsgründen immer eine neue CSR und einen neuen privaten Schlüssel, wenn Sie ein Zertifikat erneuern. Das Festhalten an demselben privaten Schlüssel ist ein Weg, der mit Sicherheitslücken gepflastert ist.

Außerdem wird empfohlen, ein SSL-Zertifikat vor dem Ablaufdatum zu erneuern. Andernfalls ist ein neuer Zertifikatskauf erforderlich.

So verifizieren Sie Ihr CSR, SSL-Zertifikat und Ihren Schlüssel

Wie wir bereits erwähnt haben, ist es ratsam, die Informationen im CSR zu überprüfen, bevor Sie ein Zertifikat beantragen. Verwenden Sie die folgenden Befehle, um Ihre Zertifikatsignierungsanforderung, Ihr SSL-Zertifikat und Ihren Schlüssel zu überprüfen:

CSR

openssl req -text -noout -verify -in server.csr

Dieser Befehl überprüft die CSR und zeigt die in der Anfrage bereitgestellten Daten an.

Schlüssel

Der folgende Befehl überprüft den Schlüssel und seine Gültigkeit:

openssl rsa -in server.key -check

SSL-Zertifikat

Wenn Sie ein Zertifikat, sein Ablaufdatum und den Unterzeichner überprüfen müssen, verwenden Sie den folgenden OpenSSL-Befehl:

openssl x509 -in server.crt -text -noout

Privater Schlüssel

Ein privater Schlüssel wird in einem Base-64-basierten PEM-Format verschlüsselt und erstellt, das nicht für Menschen lesbar ist. Sie können es mit jedem Texteditor öffnen, aber alles, was Sie sehen werden, sind ein paar Dutzend Zeilen scheinbar zufälliger Symbole, die von öffnenden und schließenden Überschriften eingeschlossen sind. Unten sehen Sie ein Beispiel für einen privaten Schlüssel:

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCVqGpH2S7F0CbEmQBgmbiDiOOGxhVwlG+yY/6OBQoPKcx4Jv2h
vLz7r54ngjaIqnqRNP7ljKjFLp5zhnAu9GsdwXbgLPtrmMSB+MVFHTJvKjQ+eY9p
dWA3NbQusM9uf8dArm+3VrZxNHQbVGXOIAPNHTO08cZHMSqIDQ6OvLma7wIDAQAB
AoGAbxKPzsNh826JV2A253svdnAibeSWBPgl7kBIrR8QWDCtkH9fvqpVmHa+6pO5
5bShQyQSCkxa9f2jnBorKK4+0K412TBM/SG6Zjw+DsZd6VuoZ7P027msTWQrMBxg
Hjgs7FSFtj76HQ0OZxFeZ8BkIYq0w+7VQYAPBWEPSqCRQAECQQDv09M4PyRVWSQM
S8Rmf/jBWmRnY1gPPEOZDOiSWJqIBZUBznvOPOOQSH6B+vee/q5edQA2OIaDgNmn
AurEtUaRAkEAn7/65w+Tewr89mOM0RKMVpFpwNfGYAj3kT1mFEYDq+iNWdcSE6xE
2H0w3YEbDsSayxc36efFnmr//4ljt4iJfwJAa1pOeicJhIracAaaa6dtGl/0AbOe
f3NibugwUxIGWkzlXmGnWbI3yyYoOta0cR9fvjhxV9QFomfTBcdwf40FgQJAH3MG
DBMO77w8DK2QfWBvbGN4NFTGYwWg52D1Bay68E759OPYVTMm4o/S3Oib0Q53gt/x
TAUq7IMYHtCHZwxkNQJBAORwE+6qVIv/ZSP2tHLYf8DGOhEBJtQcVjE7PfUjAbH5
lr++9qUfv0S13gXj5weio5dzgEXwWdX2YSL/asz5DhU=
-----END RSA PRIVATE KEY-----

In den meisten Fällen müssen Sie den privaten Schlüsselcode nicht in das Dateisystem des Servers importieren, da er im Hintergrund erstellt wird, während Sie die CSR generieren, und dann automatisch auf dem Server gespeichert wird. Während der Installation des SSL-Zertifikats ruft das System den Schlüssel ab.

Überprüfen Sie, ob ein Zertifikat und ein privater Schlüssel übereinstimmen

Zur Überprüfung müssen Sie md5-Prüfsummen ausdrucken und vergleichen. Führen Sie den folgenden Befehl aus:

openssl x509 -noout -modulus -in server.crt| openssl md5
openssl rsa -noout -modulus -in server.key| openssl md5

Fehlerbehebung bei SSL-Problemen

Das System ruft den privaten Schlüssel nicht automatisch ab

Einige Systeme automatisieren das Verfahren zum Abrufen eines privaten Schlüssels nicht. Wenn Sie außerdem ein vorhandenes Zertifikat auf einem anderen Server installieren müssen, können Sie natürlich nicht erwarten, dass dieser den privaten Schlüssel abruft. Die Hauptschwierigkeit besteht hier darin, die genaue Position des Schlüssels zu finden. Wie Sie den Schlüssel abrufen können, hängt vom verwendeten Serverbetriebssystem ab und davon, ob eine Befehlszeilenschnittstelle oder ein Webhosting-Bedienfeld eines bestimmten Typs für die CSR-Generierung verwendet wurde.

Ich muss meinen zuvor installierten privaten Schlüssel finden

Falls Ihr Zertifikat bereits installiert wurde, befolgen Sie die nachstehenden Schritte, die Ihnen dabei helfen, Ihren privaten Schlüssel auf gängigen Betriebssystemen zu finden.

Nginx

Sie sollten den Speicherort des privaten Schlüssels Ihres Servers in der virtuellen Hostdatei Ihrer Domain finden können.

Navigieren Sie zum Root-Server-Speicherort der Website (normalerweise /var/www/directory ) und öffnen Sie die Hauptkonfigurationsdatei der Site. Suchen Sie nach dem ssl_certificate_key Direktive, die den Dateipfad des privaten Schlüssels bereitstellt.

Wenn Sie den ssl_certificate_key nicht finden können Direktive, kann es sein, dass es eine separate Konfigurationsdatei für SSL-Details gibt. Suchen Sie nach etwas Beschreibendem wie ssl.conf .

Apache

Bei Verwendung der OpenSSL-Bibliothek auf Apache wird der private Schlüssel standardmäßig unter /usr/local/ssl gespeichert. Führen Sie openssl version -a aus , ein OpenSSL-Befehl, der angibt, welche Version von OpenSSL Sie ausführen.

Die Ausgabe zeigt das Verzeichnis an, das den privaten Schlüssel enthält. Siehe die Beispielausgabe unten:

OpenSSL 1.0.2g  1 Dec 2016

built on: reproducible build, date unspecified

platform: debian-amd64

options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)

compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -

D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-

strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-

Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -

DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -

DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -

DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM

OPENSSLDIR: "/usr/lib/ssl"

Die letzte Zeile OPENSSLDIR definiert den Dateipfad. Im bereitgestellten Beispiel ist dies der Standardspeicherort /usr/lib/ssl .

Wenn Sie die CSR nicht mit OpenSSL generiert haben, müssen Sie Ihre Apache-Hauptkonfigurationsdatei finden und darauf zugreifen, die apache2.conf ist oder httpd.conf . Die Direktive SSLCertficateKeyFile gibt den Dateipfad des privaten Schlüssels an.

Windows (IIS)

Auf Servern, auf denen Windows Internet Information Services ausgeführt wird, speichert das Betriebssystem den privaten Schlüssel in einem verborgenen Ordner, ähnlich wie jedes normale Windows-Betriebssystem kritische Systemdaten speichert.

Allerdings durch den Export einer .pfx Datei können Sie den privaten Schlüssel und das/die Zertifikat(e) abrufen. Führen Sie dazu die folgenden Schritte aus:

  1. Öffnen Sie die Microsoft Management Console (MMC).
  2. Erweitern Sie unter Konsolenstamm die Zertifikate (Lokaler Computer) Baum.
  3. Ihr Zertifikat befindet sich entweder im Ordner Persönlich oder Webhosting-Ordner . Finden Sie das gesuchte Zertifikat. Sie können jedes Zertifikat anhand seines Common Name (Domain) identifizieren.
  4. Klicken Sie mit der rechten Maustaste auf das Zertifikat, das Sie exportieren möchten, und wählen Sie dann Alle Aufgaben aus> Exportieren .
  5. Folgen Sie dem geführten Assistenten, um die PFX-Datei zu exportieren Datei.

Sie haben alles, was Sie brauchen, wenn Sie ein Backup speichern oder das Zertifikat auf einem anderen Windows-Server installieren möchten.

Wenn Sie das Zertifikat auf einem anderen Server installieren müssen, auf dem kein Windows ausgeführt wird (z. B. Apache), müssen Sie die .pfx-Datei konvertieren und die .key- und .crt/.cer-Dateien trennen. Mit OpenSSL ist dies möglich.

Wie verschiebe ich ein SSL-Zertifikat von einem Windows-Server auf einen Nicht-Windows-Server?

Um ein Zertifikat von einem Windows-Server auf einen Nicht-Windows-Server zu verschieben, müssen Sie den privaten Schlüssel mit OpenSSL aus einer .pfx-Datei extrahieren.

  1. Nachdem Sie die .pfx-Datei wie im obigen Abschnitt beschrieben heruntergeladen haben, führen Sie den folgenden OpenSSL-Befehl aus, um den privaten Schlüssel aus der Datei zu extrahieren:
openssl pkcs12 -in mypfxfile.pfx -out privatekey.txt -nodes

Wo mypfxfile.pfx ist die Sicherung Ihrer Windows-Serverzertifikate.

  1. Dieser Befehl erstellt eineprivatekey.txt Ausgabedatei. Verwenden Sie einen Texteditor, um die Datei zu öffnen, und Sie sehen den privaten Schlüssel oben in der Liste im Standardformat:
-----BEGIN RSA PRIVATE KEY-----
(Encrypted Text Block)
-----END RSA PRIVATE KEY-----
  1. Kopieren Sie den privaten Schlüssel, einschließlich der Tags "BEGIN" und "END", und fügen Sie ihn in eine neue Textdatei ein. Speichern Sie die Textdatei als Your_Domain_Name.key.

Ich kann meinen privaten Schlüssel nicht finden

Wenn Sie den privaten Schlüssel nicht finden können, suchen Sie nach Hinweisen. Zu beachten ist, ob der Server eine funktionierende HTTPS-Verbindung bereitstellt. Wenn dies der Fall ist, ist der private Schlüssel für den Server zugänglich und befindet sich höchstwahrscheinlich irgendwo auf dem Server.

Der logische Schritt wäre, nach einem .key zu suchen Datei. In einigen Fällen speichert OpenSSL die .key-Datei in demselben Verzeichnis, aus dem die OpenSSL -req stammt Befehl wurde ausgeführt.

Wenn Sie alles versucht haben und die .key-Datei immer noch nicht finden können, besteht die geringe Möglichkeit, dass der Schlüssel verloren gegangen ist. Keine Panik, am besten wäre es, einen neuen CSR zu generieren und das Zertifikat neu auszustellen. Denken Sie diesmal daran, sich den Speicherort des privaten Schlüssels zu merken.

OpenSSL-Befehle zum Konvertieren von CSRs

Wenn Sie mit Apache-Servern arbeiten, werden Certificate Signing Requests (CSRs) und Schlüssel im PEM-Format gespeichert. Aber was ist, wenn Sie CSRs auf einen Tomcat- oder Windows IIS-Server übertragen möchten? Nun, Sie müssten eine Standard-PEM-Datei in eine PFX-Datei konvertieren. Die folgenden Befehle helfen Ihnen dabei.

Konvertieren Sie eine PEM-CSR und einen privaten Schlüssel in PKCS12 (.pfx .p12)

FKCS12-Dateien werden zum Exportieren/Importieren von Zertifikaten in Windows IIS verwendet.

openssl pkcs12 \ -inkey domain.key \ -in domain.crt \ -export -out domain.pfx

Dadurch werden der private Schlüssel und die CSR in eine einzige .pfx-Datei konvertiert. Sie können eine Export-Passphrase einrichten, aber Sie können diese leer lassen. Bitte beachten Sie, dass Sie eine Kette von Zertifikaten in ein .pfx-Dateiformat exportieren können, indem Sie Zertifikatzeichenfolgen in einer einzigen PEM-Datei Ende-zu-Ende zusammenfügen.

Konvertieren Sie eine PKCS12- in eine PEM-CSR

openssl pkcs12 \ -in domain.pfx \ -nodes -out domain.combined.crt

Wenn die .pfx-Datei eine Kette von Zertifikaten enthält, enthält die .crt-PEM-Datei ebenfalls mehrere Elemente.

PEM in DER umwandeln

DER ist ein Binärformat, das normalerweise mit Java verwendet wird. Um eine ASCII-PEM-Datei in DER zu konvertieren, verwenden Sie den folgenden OpenSSL-Befehl:

openssl x509 \ -in domain.crt \ -outform der -out domain.der

DER in PEM umwandeln

Wenn Sie eine .der-Datei in PEM konvertieren müssen, verwenden Sie den folgenden OpenSSL-Befehl:

openssl x509 \ -inform der -in domain.der \ -out domain.crt

Verschlüsseln Sie einen unverschlüsselten privaten Schlüssel

Der folgende OpenSSL-Befehl nimmt einen unverschlüsselten privaten Schlüssel und verschlüsselt ihn mit der von Ihnen definierten Passphrase.

openssl rsa -des3 \ -in unencrypted.key \ -out encrypted.key

Definieren Sie die Passphrase zum Verschlüsseln des privaten Schlüssels.

Entschlüsseln Sie einen verschlüsselten privaten Schlüssel

Der folgende OpenSSL-Befehl nimmt einen verschlüsselten privaten Schlüssel und entschlüsselt ihn.

openssl rsa \ -in encrypted.key \ -out decrypted.key

Wenn Sie dazu aufgefordert werden, geben Sie die Passphrase ein, um den privaten Schlüssel zu entschlüsseln.


Ubuntu
  1. So sichern Sie ein cPanel-fähiges Konto mit einem Sectigo-SSL-Zertifikat

  2. So verwalten Sie SSL/TLS-Zertifikate von Lets Encrypt mit certbot

  3. Wie überprüfe ich mit OpenSSL, ob das SSL-Zertifikat SHA1 oder SHA2 ist?

  4. So wenden Sie ein SSL-Zertifikat in Plesk an

  5. Fehler im Browser des SSL-Zertifikats

Generieren und Erneuern von SSL-Zertifikaten von Let’s Encrypt in Plesk

So generieren Sie selbstsignierte SSL-Zertifikate mit OpenSSL

So installieren Sie ein kostenloses SSL-Zertifikat für Apache unter CentOS 8

Wie installiere ich ein SSL-Zertifikat in cPanel?

So installieren Sie ein SSL-Zertifikat auf cPanel

So überprüfen Sie das SSL-Ablaufdatum auf Plesk