Ich füge einem eingebetteten Linux-Gerät HTTPS-Unterstützung hinzu. Ich habe versucht, mit diesen Schritten ein selbstsigniertes Zertifikat zu erstellen:
openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
cat key.pem>>cert.pem
Dies funktioniert, aber ich erhalte einige Fehler, beispielsweise bei Google Chrome:
Dies ist wahrscheinlich nicht die Seite, die Sie suchen!
Die Sicherheitszertifikat der Website ist nicht vertrauenswürdig!
Vermisse ich etwas Ist dies der richtige Weg, um ein selbstsigniertes Zertifikat zu erstellen?
ssl
openssl
certificate
ssl-certificate
x509certificate
michelemarcon
quelle
quelle
alternate_names
Abschnitt bereitstellen und diese mit der-config
Option übergeben. Das Platzieren eines DNS-Namens im Common Name (CN) wird sowohl von der IETF als auch von den CA / Browser-Foren abgelehnt (aber nicht verboten). Jeder DNS-Name im CN muss auch im SAN vorhanden sein. Es gibt keine Möglichkeit, die Verwendung des SAN zu vermeiden. Siehe Antwort unten.Antworten:
Sie können dies mit einem Befehl tun:
Sie können auch hinzufügen
-nodes
(kurz fürno DES
), wenn Sie Ihren privaten Schlüssel nicht mit einer Passphrase schützen möchten. Andernfalls werden Sie aufgefordert, ein Passwort mit mindestens 4 Zeichen einzugeben.Der
days
Parameter (365) kann durch eine beliebige Zahl ersetzt werden, um das Ablaufdatum zu beeinflussen. Sie werden dann aufgefordert, Dinge wie "Ländername" einzugeben, aber Sie können einfach Enterdie Standardeinstellungen drücken und akzeptieren.Hinzufügen
-subj '/CN=localhost'
, um Fragen zum Inhalt des Zertifikats zu unterdrücken (durchlocalhost
die gewünschte Domain ersetzen ).Selbstsignierte Zertifikate werden nicht von Dritten validiert, es sei denn, Sie importieren sie zuvor in die Browser. Wenn Sie mehr Sicherheit benötigen, sollten Sie ein von einer Zertifizierungsstelle (CA) signiertes Zertifikat verwenden .
quelle
-subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=www.example.com"
-sha256
, SHA-256-basiertes Zertifikat zu generieren.Es ist einfach, ein selbstsigniertes Zertifikat zu erstellen. Sie verwenden nur die
openssl req
Befehl. Es kann schwierig sein, einen zu erstellen, der von der größten Auswahl an Clients wie Browsern und Befehlszeilentools verwendet werden kann.Dies ist schwierig, da die Browser ihre eigenen Anforderungen haben und restriktiver sind als die IETF . Die von Browsern verwendeten Anforderungen sind in den CA / Browser-Foren dokumentiert (siehe Referenzen unten). Die Einschränkungen treten in zwei Schlüsselbereichen auf: (1) Vertrauensanker und (2) DNS-Namen.
Moderne Browser (wie die Warez, die wir 2014/2015 verwenden) möchten ein Zertifikat, das mit einem Vertrauensanker verknüpft ist, und sie möchten, dass DNS-Namen im Zertifikat auf bestimmte Weise dargestellt werden. Und Browser bewegen sich aktiv gegen selbstsignierte Serverzertifikate.
Einige Browser machen es nicht gerade einfach, ein selbstsigniertes Serverzertifikat zu importieren. In der Tat können Sie nicht mit einigen Browsern, wie Android Browser. Die vollständige Lösung besteht also darin, Ihre eigene Autorität zu werden.
Wenn Sie nicht zu Ihrer eigenen Autorität werden, müssen Sie die richtigen DNS-Namen eingeben, um dem Zertifikat die größten Erfolgschancen zu geben. Aber ich würde Sie ermutigen, Ihre eigene Autorität zu werden. Es ist einfach, Ihre eigene Autorität zu werden, und es wird alle Vertrauensprobleme umgehen (wem kann man besser vertrauen als Ihnen selbst?).
Dies liegt daran, dass Browser eine vordefinierte Liste von Vertrauensankern verwenden, um Serverzertifikate zu validieren. Ein selbstsigniertes Zertifikat ist nicht an einen vertrauenswürdigen Anker gebunden.
Der beste Weg, dies zu vermeiden, ist:
Schritt 1 - Erstellen Sie Ihre eigene Berechtigung. Sie müssen lediglich ein selbstsigniertes Zertifikat mit
CA: true
ordnungsgemäßer Schlüsselverwendung erstellen . Dies bedeutet, dass der Betreff und der Aussteller dieselbe Entität sind, die Zertifizierungsstelle in den grundlegenden Einschränkungen auf "true" gesetzt ist (sie sollte auch als kritisch markiert werden), die Schlüsselverwendung lautetkeyCertSign
undcrlSign
(wenn Sie CRLs verwenden) und die Betreffschlüsselkennung (SKI) das gleiche wie die Authority Key Identifier (AKI).Informationen zum Werden Ihrer eigenen Zertifizierungsstelle finden Sie unter * Wie unterschreiben Sie eine Zertifikatsignierungsanforderung bei Ihrer Zertifizierungsstelle? bei Stapelüberlauf. Importieren Sie anschließend Ihre Zertifizierungsstelle in den vom Browser verwendeten Trust Store.
Die Schritte 2 bis 4 sind ungefähr das, was Sie jetzt für einen öffentlich zugänglichen Server tun, wenn Sie die Dienste einer Zertifizierungsstelle wie Startcom oder CAcert in Anspruch nehmen . In den Schritten 1 und 5 können Sie die Autorität Dritter umgehen und als Ihre eigene Autorität fungieren (wem können Sie besser vertrauen als Ihnen selbst?).
Der nächstbeste Weg, um die Browserwarnung zu vermeiden, besteht darin, dem Zertifikat des Servers zu vertrauen. Einige Browser, wie der Standardbrowser von Android, lassen dies jedoch nicht zu. Es wird also niemals auf der Plattform funktionieren.
Das Problem, dass Browser (und andere ähnliche Benutzeragenten) selbstsignierten Zertifikaten nicht vertrauen, wird im Internet der Dinge (Internet of Things, IoT) ein großes Problem darstellen. Was passiert zum Beispiel, wenn Sie eine Verbindung zu Ihrem Thermostat oder Kühlschrank herstellen, um ihn zu programmieren? Die Antwort lautet: Nichts Gutes für die Benutzererfahrung.
Die WebAppSec-Arbeitsgruppe des W3C beginnt sich mit dem Problem zu befassen. Siehe zum Beispiel Vorschlag: HTTP als nicht sicher markieren .
Die folgenden Befehle und die Konfigurationsdatei erstellen ein selbstsigniertes Zertifikat (es zeigt Ihnen auch, wie Sie eine Signaturanforderung erstellen). Sie unterscheiden sich in einer Hinsicht von anderen Antworten: Die für das selbstsignierte Zertifikat verwendeten DNS-Namen befinden sich im SAN (Subject Alternate Name) und nicht im Common Name (CN) .
Die DNS-Namen werden im SAN über die Konfigurationsdatei mit der Zeile abgelegt
subjectAltName = @alternate_names
(es gibt keine Möglichkeit, dies über die Befehlszeile zu tun). Dann gibt es einenalternate_names
Abschnitt in der Konfigurationsdatei (Sie sollten diesen nach Ihrem Geschmack einstellen):Es ist wichtig, den DNS-Namen in das SAN und nicht in den CN einzufügen, da sowohl die IETF- als auch die CA / Browser-Foren die Vorgehensweise festlegen. Sie geben auch an, dass DNS-Namen im CN veraltet (aber nicht verboten) sind. Wenn Sie einen DNS-Namen in den CN eingeben, muss dieser unter den CA / B-Richtlinien im SAN enthalten sein. Sie können es also nicht vermeiden, den alternativen Betreffnamen zu verwenden.
Wenn Sie keine DNS-Namen in das SAN einfügen, kann das Zertifikat unter einem Browser und anderen Benutzeragenten, die den Richtlinien des CA / Browser-Forums entsprechen, nicht überprüft werden.
Verwandte Themen: Browser befolgen die Richtlinien des CA / Browser-Forums. und nicht die IETF-Richtlinien. Dies ist einer der Gründe, warum ein mit OpenSSL erstelltes Zertifikat (das im Allgemeinen der IETF folgt) manchmal nicht unter einem Browser validiert wird (Browser folgen der CA / B). Sie sind unterschiedliche Standards, haben unterschiedliche Ausstellungsrichtlinien und unterschiedliche Validierungsanforderungen.
Erstellen Sie ein selbstsigniertes Zertifikat (beachten Sie die Hinzufügung der
-x509
Option):Erstellen Sie eine Signaturanforderung (beachten Sie das Fehlen einer
-x509
Option):Drucken Sie ein selbstsigniertes Zertifikat aus :
Eine Signaturanfrage drucken :
Konfigurationsdatei (über
-config
Option übergeben)Möglicherweise müssen Sie für Chrome Folgendes tun. Andernfalls kann sich Chrome beschweren, dass ein allgemeiner Name ungültig ist (
ERR_CERT_COMMON_NAME_INVALID
) . Ich bin mir nicht sicher, wie die Beziehung zwischen einer IP-Adresse im SAN und einem CN in diesem Fall ist.Es gibt andere Regeln für den Umgang mit DNS-Namen in X.509 / PKIX-Zertifikaten. In diesen Dokumenten finden Sie die Regeln:
RFC 6797 und RFC 7469 werden aufgelistet, da sie restriktiver sind als die anderen RFCs und CA / B-Dokumente. Die RFCs 6797 und 7469 erlauben ebenfalls keine IP-Adresse.
quelle
alternate_names
Abschnitt zu verwenden? Insbesondere Sub-Sub-Domains. Ich habe eine Frage, die auf diese Antwort hier verweistHier sind die Optionen, die in der Antwort von @ diegows beschrieben sind, die in der Dokumentation ausführlicher beschrieben wird :
Die Dokumentation ist tatsächlich detaillierter als die oben genannten; Ich habe es hier nur zusammengefasst.
quelle
XXX
Befehl im ursprünglichen Befehl sollte durch die Anzahl der Tage ersetzt werden, für die das Zertifikat zertifiziert werden soll. Der Standardwert beträgt 30 Tage. Zum Beispiel-days XXX
wird ,-days 365
wenn Sie Ihr cert wollen für 365 Tage gültig. Weitere Informationen finden Sie in den Dokumenten .Ab 2020 erfüllt der folgende Befehl alle Ihre Anforderungen, einschließlich SAN:
In OpenSSL ≥ 1.1.1 kann dies verkürzt werden auf:
Es wird ein Zertifikat erstellt
example.com
undexample.net
(SAN),10.0.0.1
(SAN),3650
Tage (~ 10 Jahre).Es werden folgende Dateien erstellt:
example.key
example.crt
Alle Informationen werden in der Befehlszeile bereitgestellt. Es gibt keine interaktive Eingabe , die Sie nervt. Es gibt keine Konfigurationsdateien, mit denen Sie herumspielen müssen. Alle erforderlichen Schritte werden durch einen einzigen OpenSSL-Aufruf ausgeführt : von der Generierung des privaten Schlüssels bis zum selbstsignierten Zertifikat.
Bemerkung Nr. 1: Kryptoparameter
Da das Zertifikat selbstsigniert ist und von Benutzern manuell akzeptiert werden muss, ist es nicht sinnvoll, einen kurzen Ablauf oder eine schwache Kryptografie zu verwenden.
In Zukunft möchten Sie möglicherweise mehr als
4096
Bits für den RSA-Schlüssel und einen Hash-Algorithmus verwenden, der stärker ist alssha256
, aber ab 2020 sind dies vernünftige Werte. Sie sind ausreichend stark und werden von allen modernen Browsern unterstützt.Bemerkung Nr. 2: Parameter "
-nodes
"Theoretisch könnten Sie den
-nodes
Parameter weglassen (was "keine DES-Verschlüsselung" bedeutet). In diesem Fallexample.key
würde er mit einem Passwort verschlüsselt. Dies ist jedoch für eine Serverinstallation fast nie nützlich, da Sie entweder das Kennwort auch auf dem Server speichern müssten oder es bei jedem Neustart manuell eingeben müssten.Bemerkung Nr. 3: Siehe auch
quelle
//CN=localhost
statt erstellt/CN=localhost
? Hilft hier die richtige Flucht? Löst beispielsweise das Ersetzen/CN=localhost
durch"/CN=localhost"
das Problem auf saubere Weise?Ich kann nicht kommentieren, daher werde ich dies als separate Antwort setzen. Ich habe einige Probleme mit der akzeptierten Einzeiler-Antwort gefunden:
Hier ist eine vereinfachte Version, die die Passphrase entfernt, die Sicherheit erhöht, um Warnungen zu unterdrücken, und in Kommentaren einen Vorschlag enthält, -subj zu übergeben, um die vollständige Fragenliste zu entfernen:
Ersetzen Sie 'localhost' durch eine beliebige Domain. Sie müssen die ersten beiden Befehle einzeln ausführen, da OpenSSL zur Eingabe einer Passphrase auffordert.
So kombinieren Sie die beiden zu einer PEM-Datei:
quelle
cat server.crt server.key >foo-cert.pem
. Arbeitet mit dem Beispiel inopenssl-1.0.2d/demos/ssl/
FreeBSD 10
OpenLDAP 2.4
mitTLS
Moderne Browser werfen jetzt einen Sicherheitsfehler für ansonsten wohlgeformte selbstsignierte Zertifikate aus, wenn ihnen ein SAN (Subject Alternate Name) fehlt. OpenSSL bietet keine Befehlszeilenmethode, um dies anzugeben. Daher sind die Tutorials und Lesezeichen vieler Entwickler plötzlich veraltet.
Der schnellste Weg, um wieder zum Laufen zu kommen, ist eine kurze, eigenständige Conf-Datei:
Erstellen Sie eine OpenSSL - Konfigurationsdatei (Beispiel:
req.cnf
)Erstellen Sie das Zertifikat, das auf diese Konfigurationsdatei verweist
Beispielkonfiguration von https://support.citrix.com/article/CTX135602
quelle
-sha256
.-extension 'subjectAltName = DNS:dom.ain, DNS:oth.er'
siehe github.com/openssl/openssl/pull/4986-addext
jetzt aufgerufen .Ich würde empfehlen, das -sha256 hinzuzufügen Parameter , um den SHA-2-Hash-Algorithmus zu verwenden, da große Browser erwägen, "SHA-1-Zertifikate" als nicht sicher .
Dieselbe Befehlszeile aus der akzeptierten Antwort - @diegows mit hinzugefügtem -sha256
Weitere Informationen im Google Security-Blog .
Update Mai 2018. Wie viele in den Kommentaren festgestellt haben, fügt die Verwendung von SHA-2 einem selbstsignierten Zertifikat keine Sicherheit hinzu. Ich empfehle jedoch weiterhin, es als Gewohnheit zu verwenden, keine veralteten / unsicheren kryptografischen Hash-Funktionen zu verwenden. Eine vollständige Erklärung finden Sie unter Warum ist es in Ordnung, wenn Zertifikate über dem End-Entity-Zertifikat auf SHA-1 basieren? .
quelle
Dies ist das Skript, das ich für lokale Boxen verwende, um das SAN (subjectAltName) in selbstsignierten Zertifikaten festzulegen.
Dieses Skript verwendet den Domänennamen (example.com) und generiert das SAN für * .example.com und example.com im selben Zertifikat. Die folgenden Abschnitte sind kommentiert. Nennen Sie das Skript (z
generate-ssl.sh
) und erteilen Sie ihm ausführbare Berechtigungen. Die Dateien werden in dasselbe Verzeichnis wie das Skript geschrieben.Ab Chrome 58 muss SAN in selbstsignierten Zertifikaten festgelegt sein.
Dieses Skript schreibt auch eine Informationsdatei, sodass Sie das neue Zertifikat überprüfen und überprüfen können, ob das SAN richtig eingestellt ist.
Wenn Sie Apache verwenden, können Sie auf das obige Zertifikat in Ihrer Konfigurationsdatei wie folgt verweisen:
Denken Sie daran, Ihren Apache- (oder Nginx- oder IIS-) Server neu zu starten, damit das neue Zertifikat wirksam wird.
quelle
localhost
oder127.0.0.1:port#
was wäre das EntsprechendeCN
für so etwas.2017 Einzeiler:
Dies funktioniert auch in Chrome 57, da das SAN bereitgestellt wird, ohne dass eine andere Konfigurationsdatei vorhanden ist. Es wurde einer Antwort hier entnommen .
Dadurch wird eine einzelne PEM-Datei erstellt, die sowohl den privaten Schlüssel als auch das Zertifikat enthält. Sie können sie bei Bedarf in separate PEM-Dateien verschieben.
quelle
/etc/ssl/openssl.conf
WerkenIch kann keinen Kommentar abgeben, daher füge ich eine separate Antwort hinzu. Ich habe versucht, ein selbstsigniertes Zertifikat für NGINX zu erstellen, und es war einfach, aber als ich es zur weißen Liste von Chrome hinzufügen wollte, hatte ich ein Problem. Meine Lösung bestand darin, ein Stammzertifikat zu erstellen und ein untergeordnetes Zertifikat zu signieren.
Also Schritt für Schritt. Datei erstellen config_ssl_ca.cnf Beachten Sie, dass die Konfigurationsdatei eine Option basicConstraints = CA: true hat, was bedeutet, dass dieses Zertifikat root sein soll.
Nächste Konfigurationsdatei für Ihr untergeordnetes Zertifikat.
Der erste Schritt - Erstellen Sie den Stammschlüssel und das Zertifikat
Im zweiten Schritt werden der untergeordnete Schlüssel und die Datei CSR - Certificate Signing Request erstellt. Denn die Idee ist, das untergeordnete Zertifikat von root zu signieren und ein korrektes Zertifikat zu erhalten
Öffnen Sie das Linux-Terminal und führen Sie diesen Befehl echo 0 aus
Die ca.srl- Textdatei mit der nächsten Seriennummer, die in hexadezimaler Form verwendet werden soll. Verpflichtend. Diese Datei muss vorhanden sein und eine gültige Seriennummer enthalten.
Im letzten Schritt erstellen Sie eine weitere Konfigurationsdatei und nennen sie config_ca.cnf
Sie fragen sich vielleicht, warum so schwierig, warum wir eine weitere Konfiguration erstellen müssen, um das untergeordnete Zertifikat von root zu signieren. Die Antwort ist einfach, da das untergeordnete Zertifikat einen SAN-Block haben muss - Subject Alternative Names. Wenn wir das untergeordnete Zertifikat mit den Dienstprogrammen "openssl x509" signieren, löscht das Stammzertifikat das SAN-Feld im untergeordneten Zertifikat. Daher verwenden wir "openssl ca" anstelle von "openssl x509", um das Löschen des SAN-Felds zu vermeiden. Wir erstellen eine neue Konfigurationsdatei und weisen sie an, alle erweiterten Felder zu kopieren . Copy_extensions = copy .
Das Programm stellt Ihnen 2 Fragen: 1. Unterschreiben Sie das Zertifikat? Sagen Sie "Y" 2. 1 von 1 zertifizierten Zertifikatanforderungen, festschreiben? Sagen Sie "Y"
Im Terminal sehen Sie einen Satz mit dem Wort "Datenbank". Dies bedeutet die Datei index.txt, die Sie mit dem Befehl "touch" erstellen. Es enthält alle Informationen aller Zertifikate, die Sie mit "openssl ca" util erstellen. So überprüfen Sie die Gültigkeit des Zertifikats:
Wenn Sie sehen möchten, was in CRT enthalten ist:
Wenn Sie sehen möchten, was in CSR enthalten ist:
quelle
Sie haben das allgemeine Verfahren korrekt. Die Syntax für den Befehl ist unten.
Die Warnungen werden jedoch angezeigt, da der Browser die Identifizierung nicht überprüfen konnte, indem er das Zertifikat bei einer bekannten Zertifizierungsstelle (CA) validierte.
Da es sich um ein selbstsigniertes Zertifikat handelt, gibt es keine Zertifizierungsstelle, und Sie können die Warnung ignorieren und fortfahren. Wenn Sie ein echtes Zertifikat erhalten möchten, das von jedem im öffentlichen Internet erkannt werden kann, gehen Sie wie folgt vor.
Weitere Informationen hierzu finden Sie in einem Beitrag unter Sichern der Verbindung: Erstellen eines Sicherheitszertifikats mit OpenSSL
quelle
Einzeiler FTW. Ich halte es gerne einfach. Warum nicht einen Befehl verwenden, der ALLE benötigten Argumente enthält? So gefällt es mir - dadurch werden ein x509-Zertifikat und sein PEM-Schlüssel erstellt:
Dieser einzelne Befehl enthält alle Antworten, die Sie normalerweise für die Zertifikatdetails geben würden. Auf diese Weise können Sie die Parameter einstellen und den Befehl ausführen, Ihre Ausgabe abrufen und dann Kaffee trinken gehen.
>> Mehr hier <<
quelle
Einzeiler Version 2017:
CentOS:
Ubuntu:
Bearbeiten: Vorangestellter Schrägstrich zur Option 'subj' für Ubuntu hinzugefügt.
quelle
In meinem Setup hat sich der Ubuntu-Server angemeldet bei:
/var/log/mysql/error.log
Follow-up-Notizen:
SSL error: Unable to get certificate from '...'
MySQL wird möglicherweise der Lesezugriff auf Ihre Zertifikatdatei verweigert, wenn es sich nicht in der Apparmors-Konfiguration befindet . Speichern Sie, wie in den vorherigen Schritten ^ erwähnt, alle unsere Zertifikate als
.pem
Dateien in dem/etc/mysql/
Verzeichnis, das standardmäßig von Apparmor genehmigt wurde (oder ändern Sie Apparmor / SELinux, um den Zugriff auf alle Speicherorte zu ermöglichen).SSL error: Unable to get private key
Ihre MySQL-Serverversion unterstützt möglicherweise nicht die Standardeinstellung
rsa:2048
FormatKonvertieren generiert
rsa:2048
in Ebenersa
mit:Überprüfen Sie, ob der lokale Server SSL unterstützt :
Überprüfen, ob eine Verbindung zur Datenbank SSL-verschlüsselt ist :
SSL für die Verbindung eines bestimmten Benutzers erforderlich ('SSL erforderlich'):
Alternativer Link: Langes Tutorial in Sichere PHP-Verbindungen zu MySQL mit SSL .
quelle
Wie bereits ausführlich erläutert, sind selbstsignierte Zertifikate für das Internet nicht vertrauenswürdig . Sie können Ihr selbstsigniertes Zertifikat vielen, aber nicht allen Browsern hinzufügen . Alternativ können Sie Ihre eigene Zertifizierungsstelle werden .
Der Hauptgrund, warum man kein signiertes Zertifikat von einer Zertifizierungsstelle erhalten möchte, sind die Kosten - Symantec berechnet zwischen 995 und 1.999 US-Dollar pro Jahr für Zertifikate - nur für ein Zertifikat, das für das interne Netzwerk bestimmt ist, berechnet Symantec 399 US-Dollar pro Jahr . Diese Kosten sind leicht zu rechtfertigen, wenn Sie Kreditkartenzahlungen verarbeiten oder für das Profit Center eines hochprofitablen Unternehmens arbeiten. Es ist mehr, als sich viele leisten können für ein persönliches Projekt, das man im Internet erstellt, oder für eine gemeinnützige Organisation, die mit einem minimalen Budget arbeitet, oder wenn man auf einer Kostenstelle einer Organisation arbeitet - Kostenstellen versuchen immer, mehr zu tun mit weniger.
Eine Alternative ist die Verwendung von certbot (siehe über certbot ). Certbot ist ein benutzerfreundlicher automatischer Client, der SSL / TLS-Zertifikate für Ihren Webserver abruft und bereitstellt.
Wenn Sie certbot einrichten, können Sie es aktivieren, um ein Zertifikat für Sie zu erstellen und zu verwalten, das von der Zertifizierungsstelle Let's Encrypt ausgestellt wurde .
Ich habe das über das Wochenende für meine Organisation gemacht. Ich habe die erforderlichen Pakete für certbot auf meinem Server installiert (Ubuntu 16.04) und dann den Befehl ausgeführt, der zum Einrichten und Aktivieren von certbot erforderlich ist. Man muss wahrscheinlich ein DNS - Plugin für certbot - wir verwenden derzeit DigitalOcean obwohl bald an einen anderen Dienst migrieren können.
Beachten Sie, dass einige der Anweisungen nicht ganz richtig waren und Google ein wenig Zeit und Mühe gekostet hat, um dies herauszufinden. Das hat beim ersten Mal ziemlich viel Zeit in Anspruch genommen, aber jetzt denke ich, ich könnte es in wenigen Minuten schaffen.
Bei DigitalOcean hatte ich Probleme, als ich aufgefordert wurde, den Pfad zu Ihrer INI-Datei mit DigitalOcean-Anmeldeinformationen einzugeben. Das Skript bezieht sich auf die Seite " Anwendungen und API " und die Registerkarte "Token / Schlüssel" auf dieser Seite. Sie müssen ein persönliches Zugriffstoken (Lesen und Schreiben) für die DigitalOcean-API haben oder generieren - dies ist eine hexadezimale Zeichenfolge mit 65 Zeichen. Diese Zeichenfolge muss dann in eine Datei auf dem Webserver eingefügt werden, auf dem Sie certbot ausführen. Diese Datei kann einen Kommentar als erste Zeile haben (Kommentare beginnen mit #). Die zweite Zeile lautet:
Nachdem ich herausgefunden hatte, wie ein Lese- und Schreibtoken für die DigitalOcean-API eingerichtet werden kann, war es ziemlich einfach, mit certbot ein Platzhalterzertifikat einzurichten . Beachten Sie, dass Sie kein Platzhalterzertifikat einrichten müssen. Stattdessen können Sie jede Domäne und Unterdomäne angeben, auf die das Zertifikat angewendet werden soll. Es war das Platzhalterzertifikat, für das die INI-Datei mit den Anmeldeinformationen erforderlich war, die das persönliche Zugriffstoken von DigitalOcean enthielt.
Beachten Sie, dass Public-Key-Zertifikate (auch als Identitätszertifikate oder SSL-Zertifikate bezeichnet) ablaufen und erneuert werden müssen. Daher müssen Sie Ihr Zertifikat regelmäßig (wiederkehrend) erneuern. Die Certbot-Dokumentation enthält Informationen zum Erneuern von Zertifikaten .
Mein Plan ist es, ein Skript zu schreiben, das den Befehl openssl verwendet, um das Ablaufdatum meines Zertifikats abzurufen und eine Verlängerung auszulösen, wenn es 30 Tage oder weniger dauert, bis es abläuft. Ich werde dieses Skript dann zu cron hinzufügen und es einmal pro Tag ausführen.
Hier ist der Befehl zum Lesen des Ablaufdatums Ihres Zertifikats:
quelle