[PYTHON] ACME mit Alibaba Cloud verschlüsseln: Konzepte für SSL-Zertifikate

In diesem mehrteiligen Artikel erfahren Sie, wie Sie die Let's Encrypt ACME Version 2-API mit ** Python ** für ** SSL-Zertifikate ** verwenden.

Über diesen Artikel

Let's Encrypt ist ein beliebtes Thema und viele Informationen dazu sind bereits online verfügbar. Dieser Artikel ist jedoch hilfreich, wenn Sie mehr über diese Themen erfahren möchten.

  1. Erläutert die Verwendung von Let's Encrypt, seine Vorteile und die Verwendung der ACME v2-API.
  2. Alibaba Cloud API Gateway und Alibaba Cloud CDN Erstellen Sie einen automatisierten Client zum Anfordern, Validieren, Ausstellen und Installieren von SSL-Zertifikaten, ohne mehrere manuelle Methoden zu verwenden
  3. Da der Kauf eines SSL-Zertifikats für jeden Dienst schnell teuer werden kann, haben wir eine kostengünstige Lösung zum Schutz einer großen Anzahl von Cloud-Diensten entwickelt.
  4. Im Gegensatz zu der herkömmlichen Zeit, die zum Erhalt eines kommerziellen Zertifikats erforderlich ist, können Sie SSL für Dienste schnell einrichten.

Wenn Cloud-Dienste allgemein akzeptiert werden, API Gateway und CDN Bei gängigen Diensten wie ja / product / cdn) ist es schwierig, ein SSL-Zertifikat zu beantragen, auszustellen und zu installieren. In diesem Artikel möchte ich Ihnen zeigen, wie dies einfach und richtig gemacht wird. Der Fokus liegt nicht auf Website-SSL-Zertifikaten, sondern auf schwer zu konfigurierenden Cloud-Diensten und REST-Endpunkten.

Diese Artikel konzentrieren sich auf SSL-Zertifikate für Dienste, die Certbot und Produkte von Drittanbietern vorhandene Let's Encrypt-Clients nicht unterstützen. Beispielsweise bietet certbot eine hervorragende Unterstützung für die Automatisierung der Erstellung und Erneuerung von SSL-Zertifikaten für Apache-Webserver. Windows IIS-Server werden jedoch nur wenig unterstützt. Im letzten Teil werden wir zeigen, wie Sie ein SSL-Zertifikat für IIS erstellen, es im PKCS # 12-Format bündeln und in IIS importieren.

Was ist ein SSL-Zertifikat?

Das SSL-Zertifikat lautet wie folgt.

1, Domainname, Servername, Hostname. 2. Organisatorische Identität wie Firmenname und Standort. Die Details, die mit dem SSL-Zertifikat kombiniert werden, hängen von der Art der Validierung ab, die von der Zertifizierungsstelle (CA) vor der Ausstellung des SSL-Zertifikats durchgeführt wird.

Ein SSL-Zertifikat besteht aus einer oder mehreren kleinen Datendateien, die einen Verschlüsselungsschlüssel digital an die Details Ihres Unternehmens binden. Bei der Installation auf einem Webserver werden das Vorhängeschloss, das https-Protokoll und eine sichere Verbindung vom Webserver zu Ihrem Browser aktiviert. Die Installation auf Diensten wie API Gateway schützt die Kommunikation zwischen Systemen.

Was ist Let's Encrypt?

Laut Wikipedia ist Let's Encrypt ein automatisierter Prozess, der den zuvor komplexen Prozess des manuellen Erstellens, Überprüfens, Signierens, Installierens und Erneuerns von Zertifikaten für sichere Websites eliminieren soll. Eine Zertifizierungsstelle, die kostenlose X.509-Zertifikate für die TLS-Verschlüsselung (Transport Layer Security) bereitstellt. Es wurde am 12. April 2016 veröffentlicht.

Kurz gesagt, Let's Encrypt bietet kostenlose SSL-Zertifikate für Websites und viele Cloud-Dienste wie API Gateway, CDN und ECS.

Was ist eine Zertifizierungsstelle (CA)?

Eine Zertifizierungsstelle (CA) ist eine Einheit, die SSL-Zertifikate kryptografisch signiert und deren Authentizität garantiert. Ihr Browser oder Betriebssystem verfügt über eine Liste vertrauenswürdiger Zertifizierungsstellen, mit denen Sie die Zertifikate Ihrer Site überprüfen können.

Bis vor kurzem hatten die meisten Zertifizierungsstellen einen kommerziellen Betrieb, der Geld für ihre Überprüfungs- und Signaturdienste berechnete. Let's Encrypt hat diesen Prozess den Benutzern kostenlos zur Verfügung gestellt, indem das Verfahren vollständig automatisiert und auf Sponsoren und Spenden zurückgegriffen wurde, um die erforderliche Infrastruktur zu finanzieren.

Let's Encrypt ist eine Zertifizierungsstelle, die domänenverifizierte SSL-Zertifikate ausstellt. Der Let's Encrypt-Server verwendet das ACME-Protokoll, um mit ACME-Clients zu kommunizieren und SSL-Zertifikate anzufordern, auszustellen, zu erneuern und zu widerrufen.

SSL-Zertifikatstyp

Es gibt viele Arten von SSL-Zertifikaten, aber die drei häufigsten sind Domain Validated (DV), Organization Validated (OV) und Extended Validated (EV).

1, Domain Validated (CABF OID 2.23.140.1.2.1) - Der häufigste Typ, der nur anhand des Domainnamens validiert wurde. 2, Organisation verifiziert (CABF OID 2.23.140.1.2.2) - Da der Name der Organisation an das Zertifikat angehängt ist, ist im Vergleich zu DV eine stärkere Überprüfung erforderlich. 3, Extended Validated (CABF OID 2.23.140.1.1) - Die Validierung durch die Zertifizierungsstelle erfordert den größten Aufwand und bietet dem Besucher das maximale Vertrauen (der grüne Balken wird im Webbrowser angezeigt). 4, Selbstsignierung, persönliche Authentifizierung, Testen, Codesignatur und andere Typen.

Darüber hinaus können SSL-Zertifikate für jeden Typ eine einzelne Domäne, mehrere Domänen oder ein Platzhalter sein. Dies ist eigentlich nur eine Marketingfunktion, da alle SSL-Zertifikate einen oder mehrere Domainnamen unterstützen, einschließlich Platzhalter-Domainnamen.

Let's Encrypt stellt nur DV-SSL-Zertifikate aus. Wenn Sie ein OV- oder EV-SSL-Zertifikat benötigen, müssen Sie eine kommerzielle Zertifizierungsstelle wie Alibaba Cloud SSL Certificate Services (https://www.alibabacloud.com/de/product/certificates) verwenden. Es gibt keinen Unterschied im Zertifikat außer der Menge und Art der im Zertifikat gespeicherten Informationen. Nicht nur der Domänenname, sondern auch die Zeit und der Prozess, die die Zertifizierungsstelle abschließt, um die Organisation zu überprüfen, die den Domänennamen verwaltet. Berücksichtigen Sie bei Diensten, die Finanztransaktionen anbieten, unbedingt EV-SSL-Zertifikate. DV-Zertifikate eignen sich am besten für Dienste wie CDNs und API-Gateways.

Es gibt keinen Unterschied bei den SSL-Zertifikatstypen (DV, OV, EV) für Webserver und Cloud-Dienste. Kunden (Webbrowser und echte Personen) können sich darum kümmern. Wenn ich mit einer Bank verbunden wäre und die Bank nur ein DV-SSL-Zertifikat hätte, würde ich mich fragen, warum. Wichtig ist, dass Sie den Wert Ihres Schutzes und die Kosten für das Versäumnis, ihn zu schützen, bewerten. Das DV-SSL-Zertifikat für das Kontaktformular auf der Website ist genau richtig. Für die Bearbeitung Ihrer Kreditkarte ist ein EV-Zertifikat erforderlich. Jeder, der Geld sendet, möchte auf der erweiterten Validierungsstufe vollständig validiert werden, nicht nur auf der Domain-Validierung.

Was ist ACME?

ACME ist eine Abkürzung für "ACME". Abkürzung für Automatic Certificate Management Environment. ACME ist ein Kommunikationsprotokoll, mit dem Clients eine Schnittstelle zu einer Zertifizierungsstelle (CA) herstellen können, um SSL-Zertifikate zu verwalten (ausstellen, erneuern, widerrufen).

Das ACME-Protokoll basiert auf der Weitergabe von JSON-formatierten Nachrichten über HTTPS. Die Anfrage wird mit einem privaten Schlüssel signiert und mit dem entsprechenden öffentlichen Schlüssel authentifiziert. Dieses Schlüsselpaar wird als Kontoschlüssel bezeichnet. Beachten Sie, dass sich dieses Schlüsselpaar von dem Schlüsselpaar unterscheidet, das zum Erstellen einer Zertifikatsignierungsanforderung (Certificate Signing Request, CSR) verwendet wird.

** Kontoschlüssel ** Der Kontoschlüssel wird verwendet, um die ID des Kontos anzugeben, das die Zertifikatdienste anfordert. Es wird keine Methode wie Login / Passwort verwendet. Es ist sehr wichtig, dass Sie Ihr Kontoschlüsselpaar an einem sicheren Ort aufbewahren, da der Kontoschlüssel zum Ausstellen, Erneuern und Widerrufen Ihres SSL-Zertifikats verwendet wird. Wenn Sie Ihren Kontoschlüssel verlieren, werden die unter diesem Konto erstellten Zertifikate zurückgestellt. Diese Zertifikate können nicht erneuert oder widerrufen werden. In diesem Fall müssen Sie einen neuen Kontoschlüssel erstellen und anstelle des verlorenen Zertifikats ein neues SSL-Zertifikat ausstellen. Wenn ein böswilliger Dritter Zugriff auf Ihren Kontoschlüssel erhält, können Sie die E-Mail-Adresse Ihres Kontakts ändern und Ihr Zertifikat widerrufen. Sie können kein neues SSL-Zertifikat für Ihre Domain ausstellen, da hierfür eine HTTP- oder DNS-Überprüfung Ihres Domainnamens erforderlich ist.

** Zertifikatschlüssel ** Ein Zertifikatschlüssel ist ein Schlüsselpaar, das zum Signieren einer CSR (Certificate Signing Request) verwendet wird. Dies ist kein Kontoschlüssel, obwohl beide Schlüsselpaare sind. Aus Sicherheitsgründen sollten Sie vermeiden, Ihren Kontoschlüssel in CSR zu signieren. Im Allgemeinen ist es üblich, für jedes SSL-Zertifikat einen neuen Zertifikatschlüssel zu erstellen.

** CSR-Zertifikatsignierungsanforderung ** CSR ist eine Datei (Nachricht), die an CA (Certificate Authority - Let's Encrypt) gesendet wird, um ein SSL-Zertifikat zu beantragen. Die CSR enthält Details wie den Firmennamen, den Standort und den Domainnamen der Person, die das SSL-Zertifikat beantragt. Da Let's Encrypt nur ein DV-SSL-Zertifikat (Domain Validated) ausstellt, wird im generierten SSL-Zertifikat nur der Domänenname überprüft, nur der Domänenname und die Kontaktinformationen. Eine optionale E-Mail-Adresse für ist ebenfalls aufgeführt. Details wie Firmenname und Standort sind nicht enthalten.

ACME API Python Beispiel

In dieser Artikelserie zeigen wir Ihnen, wie Sie jede ACME-API in einem kleinen und leicht verständlichen Python-Programm verwenden. Sie können auch die Alibaba Cloud-API verwenden, um Änderungen an DNS-Einträgen zu automatisieren, und die Alibaba Cloud-Dienste (API Gateway und [CDN]( Unter https://www.alibabacloud.com/de/product/cdn)) zeigen wir Ihnen auch, wie Sie ein SSL-Zertifikat installieren, um einen benutzerdefinierten Domänennamen für jeden SSL-geschützten Dienst zu erhalten.

Die erforderliche Umgebung ist wie folgt. Python 3.6 oder höher (nicht kompatibel mit Python 2)

Plattform: Getestet unter Windows 10

Python-Bibliothek: (getestete Version)

1, verschlüsselte Version 2.2.2 (27. März 2018) 2, pyOpenSSL Version 18.0.0 (16. Mai 2018) 3, Anfrage Version 2.19.1 (14. Juni 2018)

Programm: (getestete Version)

1, Python-Version für Windows 3.6.5 (28. März 2018) 2, [https://slproweb.com/products/Win32OpenSSL.htm](https://www.alibabacloud.com/blog/let%27s-encrypt-acme-on-alibaba-cloud-%E2%80%93 -part-1_593777) l "> OpenSSL Version 1.1.1.0h für Windows (27. März 2018) Download: ACME-Beispiel in Python (Zip-20 KB) neoprime_acme_examples_python.zip)

Hinweis: Die Antivirensoftware warnt Sie vor diesem Download, da es sich um eine ZIP-Datei handelt, die den Python-Quellcode enthält.

Verwendung des ACME-Beispiels.

  1. Erstellen Sie ein Arbeitsverzeichnis auf dem System. 2, bitte laden Sie das obige Paket herunter.
  2. Entpacken Sie das Paket in Ihr Arbeitsverzeichnis. 4, Create Let's Encrypt Account Key-Python make_account_key.py. 5, Kontoinformationen anzeigen --python get_account-info.py.
  3. Lesen Sie die Artikelserie und studieren Sie Quellcodebeispiele.

Überblick

Sobald Sie Ihren Kontoschlüssel, Zertifikatschlüssel und CSR erstellt haben, haben Sie alles, was Sie benötigen, um ein SSL-Zertifikat über Let's Encrypt anzufordern. Bevor Let's Encrypt ein SSL-Zertifikat ausstellt, muss Let's Encrypt Ihre Zertifikatanforderung validieren, indem überprüft wird, ob Sie Ihren Domainnamen über eine HTTP-Validierungsdatei oder einen DNS-TXT-Eintrag verwalten. (In der Let's Encrypt-Terminologie wird dies als Bestellung bezeichnet.) Die meisten Cloud-Dienste, wie z. B. API Gateway, unterstützen keine dateibasierte HTTP-Validierung. Daher unterstützen die Beispiele in dieser Artikelserie nur die DNS-Validierung.

Jetzt ist ein guter Zeitpunkt, um das Python-Setup, die erforderlichen Python-Pakete und den Quellcode für die ACME-Beispiele herunterzuladen.

[Teil 2 der Serie](https://www.alibabacloud.com/blog/let%27s-encrypt-acme-with-alibaba-cloud-api-gateway-and-cdn-%E2%80%93-part- 2_593778? Spm = a2c65.11461447.0.0.481312958mBJIP) erstellt einen Kontoschlüssel, einen Zertifikatschlüssel und eine Zertifikatsignierungsanforderung (CSR) und beginnt mit der Arbeit an jeder ACME-API in Python.

Recommended Posts

ACME mit Alibaba Cloud verschlüsseln: Konzepte für SSL-Zertifikate
ACME mit Alibaba Cloud verschlüsseln: Erstellen Sie ACME-Endpunkte, Verzeichnisse und ACME-Konten
ACME mit Alibaba Cloud verschlüsseln: Kontoschlüssel, Zertifikatschlüssel, Zertifikatsignierungsanforderung erstellen
ACME mit Alibaba Cloud verschlüsseln: Erstellen Sie eine ACME-Anforderung und signieren Sie eine JWS-Nutzlast
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
So stellen Sie eine Webanwendung in der Alibaba Cloud als Freiberufler bereit
Installieren Sie Odoo auf einer Alibaba Cloud ECS-Instanz
So installieren Sie Fast.ai auf einer Alibaba Cloud-GPU und führen es auf einem Jupyter-Notebook aus