Auf dieser Seite wird erläutert, wie Sie einen SSL-Port (Secure Sockets Layer) für die Bereitstellung des Extensible Service Proxys (ESP) mit Google Kubernetes Engine, Kubernetes oder Compute Engine aktivieren. Möglicherweise möchten Sie für einige Anwendungsfälle einen SSL-Port für den bereitgestellten Endpoints-Dienst aktivieren. Wenn Sie beispielsweise die Transcodierungsfunktion von gRPC verwenden, soll der Dienst HTTP 1.1- und gRPC-Anfragen an demselben Port empfangen.
Sie sollten jedoch die Anleitungen für den ausgewählten Diensttyp und die ausgewählte Umgebung gelesen haben und wissen, wie Sie ESP ohne SSL bereitstellen.
SSL-Schlüssel und -Zertifikate konfigurieren
So konfigurieren Sie den SSL-Port für die Bereitstellung von HTTPS-Anfragen:
- Prüfen Sie, ob die SSL-Schlüsseldatei den Namen - nginx.keyhat und die Zertifikatdatei den Namen- nginx.crthat. Zu Testzwecken können Sie mithilfe von OpenSSL mit dem folgenden Befehl ein selbst signiertes- nginx.keyund- nginx.certgenerieren:- openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout ./nginx.key -out ./nginx.crt 
- Geben Sie in Ihrem Serverzertifikat - CNund- subjectAltNamean. Der Wert dieser Attribute sollte mit dem DNS oder der IP-Adresse übereinstimmen, die von Clients zum Aufrufen Ihres Dienstes verwendet wird. Andernfalls schlägt der SSL-Handshake fehl.
SSL für ESP in Kubernetes aktivieren
So aktivieren Sie den SSL-Port für den ESP in Kubernetes:
- Erstellen Sie mit Ihrem SSL-Schlüssel und -Zertifikat ein Kubernetes-Secret: - kubectl create secret generic nginx-ssl \ --from-file=./nginx.crt --from-file=./nginx.key 
- Bearbeiten Sie die Kubernetes-Konfigurationsdateien, z. B. - esp_echo_gke.yaml, wie im folgenden Snippet dargestellt:- Hinweis: Sie sehen in dem Konfigurationsbeispiel die zu bearbeitenden Zeilen. Zur Bereitstellung der Datei in Cloud Endpoints ist die vollständige Konfigurationsdatei erforderlich. 
- Stellen Sie die generierten Kubernetes-Schlüssel als Volumes bereit. Dabei können Sie sich an den Anweisungen zu Volumes auf der Kubernetes-Seite orientieren. 
- Starten Sie den ESP wie auf der Seite ESP-Startoptionen beschrieben. Achten Sie jedoch darauf, das Start-Flag - --ssl_portzu setzen, um den SSL-Port zu aktivieren. Der SSL-Standardport ist 443.
- Starten Sie den Dienst mit der aktualisierten Kubernetes-Konfigurationsdatei über den Befehl - kubectl.- kubectl apply -f esp_echo_gke.yaml 
SSL-Zertifikate aktualisieren
SSL-Zertifikate sollten regelmäßig aktualisiert werden. Zum Aktualisieren von SSL-Zertifikaten führen Sie die folgenden Schritte aus:
- Erstellen Sie wie in Schritt 1 oben beschrieben neue Zertifikate.
- Stellen Sie die neuen Zertifikate wie in Schritt 3 oben beschrieben für die Kubernetes-Secrets bereit.
- Aktualisieren Sie das ESP-Kubernetes-Deployment wie in Schritt 5 oben beschrieben.
SSL für ESP in Compute Engine aktivieren
Zum Aktivieren von SSL in Compute Engine kopieren Sie zuerst die Dateien nginx.key und nginx.crt in den Ordner /etc/nginx/ssl der Compute Engine-Instanz. Gehen Sie dabei so vor:
- Führen Sie den folgenden Befehl aus und ersetzen Sie INSTANCE_NAME durch den Namen Ihrer Compute Engine-Instanz: - gcloud compute scp nginx.* INSTANCE-NAME 
- Stellen Sie mit - ssheine Verbindung zur Instanz her.- gcloud compute ssh INSTANCE-NAME 
- Geben Sie im Feld für die Instanz-VM das Verzeichnis an und kopieren Sie die Dateien: - sudo mkdir -p /etc/esp/ssl- sudo cp server.* /etc/esp/ssl/
- Verwenden Sie für die Bereitstellung mit Docker die Anleitung für Ihren Diensttyp. Führen Sie den ESP-Docker-Container mit diesem Befehl aus: - sudo docker run --name=esp \ --detach \ --publish=443:443 \ --net=esp_net \ --volume=/etc/nginx/ssl:/etc/nginx/ssl \ --link=echo:echo \ gcr.io/endpoints-release/endpoints-runtime:1 \ --service=SERVICE_NAME \ --rollout_strategy=managed \ --backend=echo:8080 \ --ssl_port=443 - Im Vergleich zum Befehl - docker runohne SSL erstellt die SSL-Version des Befehls eine andere Konfiguration. Beispiel für den SSL-Befehl:- Der Ordner mit den Schlüssel- und CRT-Dateien wird mit --volumeim Container bereitgestellt.
- Verwenden Sie --ssl_port=443, damit SSL von ESP auf Port443aktiviert wird.
- Ändert das Flag --publishfür die Portzuordnung.
 
- Der Ordner mit den Schlüssel- und CRT-Dateien wird mit 
SSL-Zertifikate aktualisieren
SSL-Zertifikate sollten regelmäßig aktualisiert werden. Zum Aktualisieren von SSL-Zertifikaten führen Sie die folgenden Schritte aus:
- Erstellen Sie neue Zertifikate und kopieren Sie sie wie in Schritt 1 oben beschrieben nach VM-Instanzen.
- Kopieren Sie die neuen Zertifikate wie in Schritt 3 oben beschrieben in das Verzeichnis /etc/esp/ssl.
- Beenden Sie den ESP-Container mithilfe des Befehls sudo docker runund starten Sie ihn neu, wie in Schritt 4 oben beschrieben.
SSL-Port testen
Legen Sie die folgenden Umgebungsvariablen fest, um die Tests zu vereinfachen:
- Legen Sie für IP_ADDRESS die IP-Adresse der Compute Engine-Instanz mit dem neuen SSL-Zertifikat fest. 
- Legen Sie für ENDPOINTS_KEY einen gültigen API-Schlüssel fest. 
Nachdem Sie den SSL-Port aktiviert haben, können Sie mithilfe von HTTPS Anfragen an den Extensible Service Proxy senden: Wenn Sie ein selbst signiertes Zertifikat verwenden, aktivieren Sie mit -k die unsichere Option in curl:
curl -k -d '{"message":"hello world"}' -H "content-type:application/json" \
https://IP_ADDRESS:443/echo?key=ENDPOINTS_KEYAlternativ können Sie das Zertifikat im Format pem generieren und das selbst signierte Zertifikat mithilfe der Option --cacert wie unten dargestellt in curl verwenden:
openssl x509 -in nginx.crt -out nginx.pem -outform PEMcurl --cacert "./nginx.pem" -d '{"message":"hello world"}' -H "content-type:application/json" \ https://IP_ADDRESS:443/echo?key=ENDPOINTS_KEY