Die App Engine-SSL-Unterstützung bietet global verteilte SSL-Endpunkte und ein integriertes Load-Balancing, um Ihre Anwendung weltweit sicher, zuverlässig und schnell Ihrer Zielgruppe bereitzustellen.
Standardmäßig werden HTTPS-Verbindungen in Ihrer benutzerdefinierten Domain automatisch mithilfe von verwalteten SSL-Zertifikaten aktiviert. Nach dem Zuordnen einer benutzerdefinierten Domain zu Ihrer Anwendung und Aktualisieren Ihrer DNS-Einträge stellt App Engine ein verwaltetes SSL-Zertifikat bereit, verlängert das Zertifikat und widerruft es, wenn Sie die benutzerdefinierte Domain aus Ihrer Anwendung entfernen.
Vorbereitung
Im App Engine-Projekt muss die benutzerdefinierte Domain bereits eingerichtet sein.
Wenn Sie Cloud Load Balancing und serverloses NEGS nutzen, um Traffic an Ihre App Engine-Anwendung weiterzuleiten, empfehlen wir, Ihre benutzerdefinierte Domain dem Load-Balancer und nicht direkt Ihrer Anwendung zuzuordnen. Außerdem sollten Sie SSL-Zertifikate verwenden, die für den Load-Balancer erstellt wurden. Dadurch entfällt die Notwendigkeit, für jede serverlose Anwendung separate SSL-Zertifikate zu verwalten. Darüber hinaus können Sie mit Cloud Load Balancing SSL-Richtlinien festlegen, die die Funktionen von SSL steuern, die Ihr Load-Balancer mit Clients aushandelt. Weitere Informationen finden Sie auf den folgenden Seiten:
- Von Google verwaltete SSL-Zertifikate verwenden
- Selbstverwaltete SSL-Zertifikate verwenden
- SSL-Richtlinien
Beachten Sie die folgende Einschränkung:
- Wir empfehlen die Verwendung von Steuerelementen für eingehenden Traffic, damit Ihre Anwendung nur Anfragen empfängt, die vom Load-Balancer (und ggf. von der VPC) gesendet werden. Andernfalls können Nutzer die App Engine-URL Ihrer Anwendung verwenden, um den Load-Balancer, die Google Cloud Armor-Sicherheitsrichtlinien, SSL-Zertifikate und private Schlüssel zu umgehen, die über den Load-Balancer weitergegeben werden.
Verwaltetes Zertifikat prüfen
Nachdem Sie Ihre benutzerdefinierte Domain eingerichtet und die DNS-Einträge aktualisiert haben, wird automatisch innerhalb weniger Minuten ein verwaltetes SSL-Zertifikat bereitgestellt. Die Auswahl der Zertifizierungsstelle erfolgt automatisch. Das verwaltete Zertifikat wird entweder von Google Trust Services (GTS) oder Let's Encrypt signiert.
So prüfen Sie, ob das Zertifikat bereitgestellt wurde:
-
Wechseln Sie in der Google Cloud Console zu App Engine > Einstellungen > Benutzerdefinierte Domains:
-
Die SSL-Sicherheit wird als Von Google verwaltet angezeigt.
Fehler bei verwalteten SSL-Zertifikaten beheben
Möglicherweise müssen Sie die DNS-Einträge für Ihre benutzerdefinierte Domain aktualisieren, um den Domainnamen zu bestätigen. App Engine kann keine Zertifikate für nicht bestätigte Domains ausstellen.
Sie können den Status Ihres Zertifikats mit der Admin API über die Anfrage AuthorizedCertificate.GET prüfen.
Wenn kein verwaltetes Zertifikat ausgestellt wurde, weil die DNS-Einträge nicht verfügbar sind, ist im Feld
ManagedCertificate.ManagementStatus
möglicherweiseFAILED_RETRYING_NOT_VISIBLE
angegeben. Prüfen Sie in diesem Fall, ob die DNS-Einträge auf dem neuesten Stand sind. Warten Sie einige Minuten und versuchen Sie es dann noch einmal. Es kann bis zu 24 Stunden dauern, bis DNS-Einträge verfügbar werden.Wenn der Status
FAILED_PERMANENT
lautet, sind alle Aktualisierungsversuche gescheitert. Überprüfen Sie Ihre DNS-Einstellungen noch einmal und aktualisieren Sie dann die Zuordnung Ihrer benutzerdefinierten Domain. Dazu folgen Sie den Schritten unter Upgrade auf verwaltete SSL-Zertifikate durchführen.
Upgrade auf verwaltete SSL-Zertifikate ausführen
Beachten Sie vor dem Upgrade auf von Google verwaltete SSL-Zertifikate, dass Platzhalterzuordnungen durch verwaltete Zertifikate nicht unterstützt werden.
Wenn Sie Subdomains verwenden und das Zertifikat von Let's Encrypt ausgestellt wurde, gilt für jede Basisdomain ein Limit von 50 verwalteten Zertifikaten pro Woche. Ist das Limit erreicht, versucht App Engine weiterhin, verwaltete Zertifikate auszustellen, bis alle Anfragen abgearbeitet sind.
Wenn Sie von Ihren eigenen SSL-Zertifikaten zu von Google verwalteten SSL-Zertifikaten wechseln oder einer vorhandenen Anwendung mit einer benutzerdefinierten Domain verwaltete SSL-Zertifikate hinzufügen möchten, aktualisieren Sie die Zuordnung Ihrer Domain:
-
Wechseln Sie in der Google Cloud Console zu App Engine > Einstellungen > Benutzerdefinierte Domains:
-
Wählen Sie die zu sichernde Domain aus und klicken Sie auf Verwaltete Sicherheit aktivieren.
Verwaltete SSL-Zertifikate deaktivieren
So deaktivieren Sie verwaltete SSL-Zertifikate:
-
Wechseln Sie in der Google Cloud Console zu App Engine > Einstellungen > Benutzerdefinierte Domains:
-
Wählen Sie die Domain aus und klicken Sie auf Verwaltete Sicherheit deaktivieren.
Eigene SSL-Zertifikate verwenden
Sie können anstelle von verwalteten SSL-Zertifikaten eigene Zertifikate verwenden. Wenn Ihr Zertifikat keinen Transparenznachweis enthält, zeigt die Anwendung möglicherweise SSL-Warnungen in Chrome an, da Nachweise der Zertifikatstransparenz erzwungen werden. Weitere Informationen zu Nachweisen der Zertifikatstransparenz und dem Erbringen dieser Nachweise finden Sie unter Zertifikatstransparenz erzwingen.
So verwenden und verwalten Sie Ihre eigenen SSL-Zertifikate anstatt von Google verwaltete Zertifikate:
Im App Engine-Projekt muss die benutzerdefinierte Domain bereits eingerichtet sein.
Deaktivieren Sie die von Google verwalteten Standardzertifikate.
Lassen Sie sich von der Zertifizierungsstelle (CA) Ihrer Wahl ein Zertifikat für die Domain ausstellen. Die genaue Vorgehensweise kann je nach Zertifizierungsstelle variieren. Die typischen Schritte sehen Sie jedoch unter Zertifikate anfordern.
Wandeln Sie die private Schlüsseldatei und die SSL-Zertifikatsdatei in Formate um, die von App Engine unterstützt werden. Damit Sie Ihre Dateien hochladen können, muss der private Schlüssel in einen privaten RSA-Schlüssel umgewandelt und die SSL-Zertifikate müssen zu einer einzigen Datei verkettet werden. Weitere Informationen finden Sie unter Private Schlüssel umwandeln und SSL-Zertifikate verketten.
Prüfen Sie, ob Sie die erforderlichen Berechtigungen in der Google Cloud Console und die bestätigte Inhaberschaft (Schritt 3) für alle zugehörigen Domains oder deren übergeordnete Domains haben. Beispiel:
- Wenn das Zertifikat für
www.example.com
vorgesehen ist, können Sie die Inhaberschaft vonwww.example.com
oder vonexample.com
bestätigen. - Wenn das Zertifikat für
www.example.com
undsub.example.com
bestimmt ist, können Sie entweder die Inhaberschaft vonwww.example.com
undsub.example.com
oder aber vonexample.com
bestätigen. - Wenn das Zertifikat für
*.example.com
bestimmt ist, müssen Sie die Inhaberschaft vonexample.com
bestätigen.
- Wenn das Zertifikat für
Laden Sie den privaten Schlüssel und das SSL-Zertifikat hoch und ordnen Sie Ihre Domain dann der Anwendung zu:
-
Wechseln Sie in der Google Cloud Console zu App Engine > Einstellungen > SSL-Zertifikate:
-
Klicken Sie auf Neues Zertifikat hochladen.
- Laden Sie unter
PEM encoded X.509 public key certificate
das verkettete SSL-Zertifikat hoch, z. B.concat.crt
. Laden Sie dann unter Nicht verschlüsselter PEM-codierter privater RSA-Schlüssel Ihren privaten RSA-Schlüssel hoch, z. B.myserver.key.pem
. - Klicken Sie auf Hochladen. Jedes von Ihnen hochgeladene SSL-Zertifikat ist für alle anderen Google Cloud-Projekte sichtbar und verfügbar. Sie müssen also dasselbe Zertifikat nicht mehrfach hochladen.
- Wählen Sie das Zertifikat aus, das Sie einer Domain zuweisen möchten, und klicken Sie dann auf Speichern, um für diese Domain SSL zu verwenden.
-
Testen Sie Ihre Änderungen. Rufen Sie dazu die Domain in Ihrem Browser per
https
auf, z. B.https://www.example.com
.
Zuordnungen von einem bereitgestellten auf ein neues Zertifikat übertragen
Wenn das Ablaufdatum eines Zertifikats näher rückt, müssen Sie ein neues Zertifikat hochladen und die vorhandenen Zuordnungen des alten Zertifikats auf dieses neue Zertifikat übertragen. Bei der folgenden Vorgehensweise wird davon ausgegangen, dass das vorhandene Zertifikat noch nicht abgelaufen ist und derzeit für Ihre benutzerdefinierte Domain verwendet wird.
So übertragen Sie Zuordnungen von einem aktiv bereitgestellten Zertifikat:
Lassen Sie sich von der Zertifizierungsstelle (Certificate Authority, CA) Ihrer Wahl ein neues Zertifikat für Ihre Domain ausstellen. Die typischen Schritte sehen Sie unter Zertifikate anfordern.
Wandeln Sie die private Schlüsseldatei und die SSL-Zertifikatsdatei in Formate um, die von App Engine unterstützt werden. Weitere Informationen dazu finden Sie unter Private Schlüssel konvertieren und SSL-Zertifikate verketten.
Laden Sie den privaten RSA-Schlüssel und das verkettete SSL-Zertifikat hoch:
-
Laden Sie das SSL-Zertifikat auf der Seite SSL-Zertifikate hoch.
Zur Seite „SSL-Zertifikate”-
Klicken Sie auf Neues Zertifikat hochladen.
- Laden Sie unter PEM-codiertes X.509-Public-Key-Zertifikat das verkettete SSL-Zertifikat hoch, z. B.
concat.crt
. Laden Sie dann unter Nicht verschlüsselter PEM-codierter privater RSA-Schlüssel Ihren privaten RSA-Schlüssel hoch, z. B.myserver.key.pem
. - Klicken Sie auf Hochladen.
-
- Wählen Sie das neu hinzugefügte Zertifikat aus der Zertifikatsliste und dann die Domain mit dem alten bereitgestellten Zertifikat aus.
- Klicken Sie auf Speichern, um die Zuordnungen vom alten zum neuen Zertifikat zu übertragen.
-
Zertifikat anfordern
Das Verfahren zum Abrufen eines SSL-Zertifikats hängt von der verwendeten Zertifizierungsstelle ab. Um es auszuführen, muss die vorliegende Anleitung eventuell leicht angepasst werden. In der Regel stellt jede Zertifizierungsstelle eine Anleitung zur Verfügung, die Sie schrittweise durch das Verfahren führt.
So fordern Sie ein Zertifikat für die Verwendung mit Ihrer App Engine-Anwendung an:
Generieren Sie den privaten Schlüssel und eine Anfrage für die Signierung des Zertifikats (Certificate Signing Request, CSR) mithilfe des openssl-Tools:
Sie führen den folgenden Befehl in einem Verzeichnis aus, in dem Sie die
server.csr
-Datei erstellen möchten.openssl req -nodes -newkey rsa:2048 -keyout [MY_PRIVATE_KEY].key -out [MY_CSR].csr
Dabei gilt:
[MY_PRIVATE_KEY].key
ist die generierte Datei, in der Ihr privater Schlüssel gespeichert ist. Beispiel:myserver.key
[MY_CSR].csr
ist die generierte Datei für Ihre Anfrage zur Signierung des Zertifikats. Beispiel:server.csr
Geben Sie die folgenden Informationen ein, wenn Sie dazu aufgefordert werden:
- Ihren zweistelligen Ländercode, zum Beispiel
US
für die USA - Den Namen Ihrer Stadt
- Den Name Ihres Unternehmens Sie können Ihren eigenen Namen verwenden, wenn Sie keine Firma haben
- Ihre Organisationseinheit oder
NA
, falls keine solche vorhanden ist - Einen allgemeinen Namen, der Ihre Domain darstellt, zum Beispiel:
www.example.com
- Ihre E-Mail-Adresse
Alle anderen Werte sind optional und müssen nicht angegeben werden.
- Ihren zweistelligen Ländercode, zum Beispiel
Ermitteln Sie, welche Zertifizierungsstelle für Sie geeignet ist, und erwerben Sie dann ein Zertifikat. Sie können beispielsweise SSLMate, Thawte, Comodo oder eine beliebige andere Zertifizierungsstelle verwenden.
Ausführliche Informationen zu den unterstützten Zertifikatstypen finden Sie unter App Engine-Unterstützung für SSL-Zertifikate.
Wenn Ihre Zertifizierungsstelle den Inhalt Ihrer CSR-Datei anfordert, richten Sie sich nach deren Anleitung zum Kopieren und Einfügen von Inhalten aus der
.csr
-Datei, die Sie zuvor erstellt haben, zum Beispielserver.csr
.Folgen Sie den Aufforderungen, wenn Ihre Zertifizierungsstelle die Genehmigung des Domaininhabers anfordert.
Nachdem Sie die Genehmigung des Domaininhabers erteilt haben, sendet die Zertifizierungsstelle Ihnen das Zertifikat, bei dem es sich in der Regel um eine ZIP-Datei handelt. Entpacken Sie diese Datei in ein Arbeitsverzeichnis, damit Sie diese Zertifikate verketten und in App Engine hochladen können.
Private Schlüssel umwandeln und SSL-Zertifikate verketten
Bevor Sie Ihren privaten Schlüssel und Ihre SSL-Zertifikate in App Engine hochladen, müssen Sie Ihren privaten Schlüssel in einen privaten RSA-Schlüssel umwandeln und alle SSL-Zertifikate verketten.
Wandeln Sie die zuvor generierte private Schlüsseldatei in einen nicht verschlüsselten privaten RSA-Schlüssel um. Sie können beispielsweise den Befehl
openssl rsa
ausführen:openssl rsa -in [MY_PRIVATE_KEY].key -out [MY_RSA_KEY].key.pem
Dabei gilt:
[MY_PRIVATE_KEY].key
ist die generierte Datei, in der Ihr privater Schlüssel gespeichert ist. Beispiel:myserver.key
[MY_RSA_KEY].key
ist die erzeugte Datei, die den nicht verschlüsselten privaten RSA-Schlüssel enthält. Beispiel:myserver.key.pem
Beispiel:
openssl rsa -in myserver.key -out myserver.key.pem
Sie verketten alle
.crt
-Dateien von Ihrer Zertifizierungsstelle mit dem folgenden Befehl zu einer Datei:cat [MY_DOMAIN_CERT].crt [MY_SecureServerCA].crt [MY_TrustCA].crt [MY_TrustExternalCARoot].crt > [MY_CONCAT_CERT].crt
Dabei gilt:
[MY_DOMAIN_CERT].crt
ist das Zertifikat für Ihre Domain. Beispiel:www_example_com.crt
[MY_SecureServerCA].crt
,[MY_TrustCA].crt
und[MY_TrustExternalCARoot].crt
sind die anderen Zertifikatsdateien von Ihrer Zertifizierungsstelle[MY_CONCAT_CERT].crt
ist die verkettete Datei mit den Inhalten aller.crt
-Zertifikatsdateien von Ihrer Zertifizierungsstelle, Beispiel:concat.crt
Beispiel:
cat www_example_com.crt AddTrustExternalCARoot.crt RSADomainValidationSecureServerCA.crt RSAAddTrustCA.crt > concat.crt
Prüfen Sie Ihr SSL-Zertifikat und den privaten Schlüssel:
Prüfen Sie, ob der private Schlüssel und das Zertifikat übereinstimmen. Dazu können Sie die Befehle
openssl x509
undopenssl rsa
verwenden. Beispiele:openssl x509 -noout -modulus -in concat.crt | openssl md5 openssl rsa -noout -modulus -in myserver.key.pem | openssl md5
Die Befehle openssl x509 und openssl rsa sollten dasselbe Ergebnis liefern.
Zum Überprüfen der Gültigkeit eines Zertifikats und seiner CA-Kette können Sie den Befehl openssl verify verwenden. Beispiel:
openssl verify -verbose -CAfile concat.crt concat.crt
Wenn Sie fertig sind, können Sie den privaten RSA-Schlüssel und die verketteten Zertifikate in App Engine hochladen.
App Engine-Unterstützung für SSL-Zertifikate
App Engine unterstützt die folgenden Zertifikatstypen:
- Einzelne Domain/einzelner Hostname
- Selbstsigniert
- Platzhalter
- Alternativer Antragstellername (SAN)/Mehrere Domains
Ihre Zertifikate und Schlüssel müssen verschiedene Anforderungen erfüllen:
- Der private Schlüssel und das Zertifikat sollten im PEM-Format hochgeladen werden.
- Private Schlüssel dürfen nicht verschlüsselt sein.
- Eine Zertifikatsdatei darf höchstens fünf Zertifikate enthalten, einschließlich verketteter und Zwischenzertifikate.
- Alle Antragstellernamen auf dem Hostzertifikat sollten mit den vom Nutzer verifizierten Domains übereinstimmen oder Subdomains davon sein.
- Private Schlüssel müssen RSA-Verschlüsselung verwenden.
- Maximal zulässiger Schlüssel-Modulus: 2.048 Bit.
Wenn das Hostzertifikat ein Zwischenzertifikat oder ein verkettetes Zertifikat erfordert (das viele Zertifizierungsstellen ausstellen), müssen Sie die Zwischenzertifikate oder verketteten Zertifikate an das Ende der öffentlichen Zertifikatsdatei anfügen.
Einige App Engine-Features verwenden spezielle Subdomains. Beispielsweise kann eine Anwendung Subdomains verwenden, um Anwendungsdienste oder verschiedene Versionen Ihrer Anwendung anzusprechen. Um diese mit SSL zu verwenden, ist es sinnvoll, ein SAN- oder Wildcard-Zertifikat einzurichten. Wildcard-Zertifikate unterstützen nur eine Subdomainebene.
Benutzerdefinierte SSL-Zertifikate entfernen
Führen Sie die folgenden Schritte aus, um die Verwendung eines benutzerdefinierten SSL-Zertifikats einzustellen:
Rufen Sie in der Google Cloud Console die Seite mit den Einstellungen für SSL-Zertifikate in App Engine auf.
Klicken Sie auf das Zertifikat, das Sie aus Ihrer Domain entfernen möchten.
Heben Sie die Auswahl des Domainnamens auf, für den Sie das SSL-Zertifikat nicht mehr verwenden möchten, und klicken Sie dann auf Speichern.
Strict-Transport-Security-Header verwenden
Aus Sicherheitsgründen sollten alle Anwendungen von Clients eine Verbindung über https
anfordern. Wenn Sie den Browser anweisen möchten, https
anstelle von http
zu verwenden, geben Sie den Header Strict-Transport-Security
an.
Aktivierte TLS-Versionen und -Chiffren aufrufen
Installieren Sie auf Ihrem Computer den
nmap
-Network Mapper, falls dieser noch nicht verfügbar ist. Eine Installationsanleitung finden Sie unter https://nmap.org/.Geben Sie den folgenden Befehl ein, um festzustellen, welche TLS-Versionen und -Chiffren für Ihre Anwendung aktiviert sind:
nmap -sV --script ssl-enum-ciphers -p 443 HOSTNAME
Ersetzen Sie
HOSTNAME
durch den Hostnamen für Ihre Anwendung. Sie können entweder Ihre benutzerdefinierte Domain oder denappspot.com
-Hostnamen verwenden, den App Engine für Ihre Anwendung erstellt hat. Beispiel:nmap -sV --script ssl-enum-ciphers -p 443 example.uc.r.appspot.com
TLS-Versionen und -Chiffren deaktivieren
Wenn Sie Cloud Load Balancing und serverlose NEGs verwenden, um Traffic an Ihre App Engine-Anwendung weiterzuleiten, können Sie eine TLS-Version oder -Chiffre deaktivieren, wenn Sie eine SSL-Sicherheitsrichtlinie definieren. Diese gibt an, welche TLS-Versionen und -Chiffren für HTTPS- oder SSL-Verbindungen verwendet werden können.