Cette page explique comment activer un port SSL (Secure Sockets Layer) lors du déploiement d'Extensible Service Proxy (ESP) avec Google Kubernetes Engine, Kubernetes ou Compute Engine. Vous pouvez activer un port SSL pour votre service Endpoints déployé dans certains cas d'utilisation. Par exemple, si vous utilisez la fonctionnalité de transcodage de gRPC, vous souhaitez peut-être que votre service reçoive à la fois des requêtes HTTP 1.1 et gRPC sur le même port.
Avant de commencer, assurez-vous d'avoir déjà consulté les tutoriels sur le type de service et l'environnement que vous avez choisis, et que vous savez comment déployer ESP sans SSL.
Configurer vos clés et certificats SSL
Pour configurer votre port SSL afin qu'il diffuse les requêtes HTTPS, procédez comme suit :
- Assurez-vous que votre fichier de clé SSL est nommé - nginx.keyet que votre fichier de certificat s'appelle- nginx.crt. Pour les tests, vous pouvez générer des fichiers autosignés- nginx.keyet- nginx.certà l'aide d'OpenSSL à l'aide de la commande suivante :- openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout ./nginx.key -out ./nginx.crt 
- Indiquez à la fois - CNet- subjectAltNamedans votre certificat de serveur. La valeur de ces attributs doit correspondre au DNS ou à l'adresse IP utilisés par les clients pour appeler votre service. Sinon, le handshake SSL échouera.
Activer SSL pour ESP sur Kubernetes
Pour activer le port SSL pour ESP sur Kubernetes, procédez comme suit :
- Créez un secret Kubernetes contenant la clé et le certificat SSL : - kubectl create secret generic nginx-ssl \ --from-file=./nginx.crt --from-file=./nginx.key 
- Modifiez les fichiers de configuration Kubernetes, par exemple - esp_echo_gke.yaml, comme illustré dans l'extrait suivant :- Remarque : L'exemple de configuration affiche les lignes à modifier. Le fichier de configuration complet est nécessaire au déploiement du fichier sur Cloud Endpoints. 
- Installez les codes secrets Kubernetes créés en tant que volumes, à l'aide des instructions de la page relative aux Volumes Kubernetes. 
- Démarrez ESP comme décrit sur la page Spécifier des options de démarrage pour ESP. N'oubliez pas d'ajouter l'indicateur de démarrage - --ssl_portpour activer le port SSL. (Le port SSL par défaut est le 443.)
- Démarrez le service avec le fichier de configuration Kubernetes mis à jour à l'aide de - kubectl.- kubectl apply -f esp_echo_gke.yaml 
Mettre à jour les certificats SSL
Il est important de mettre régulièrement à jour vos certificats SSL. Pour mettre à jour vos certificats SSL, procédez comme suit :
- Créez des certificats, comme décrit à l'étape 1 ci-dessus.
- Installez les nouveaux certificats sur les secrets Kubernetes, comme décrit à l'étape 3 ci-dessus.
- Mettez à jour le déploiement ESP Kubernetes, comme décrit à l'étape 5 ci-dessus.
Activer SSL pour ESP sur Compute Engine
Pour activer SSL sur Compute Engine, commencez par copier les fichiers nginx.key et nginx.crt dans le dossier /etc/nginx/ssl de l'instance Compute Engine, comme suit :
- Exécutez la commande suivante et remplacez INSTANCE_NAME par le nom de l'instance Compute Engine : - gcloud compute scp nginx.* INSTANCE-NAME 
- Connectez-vous à l'instance via - ssh.- gcloud compute ssh INSTANCE-NAME 
- Dans la zone d'instance de VM, créez le répertoire et copiez-y les fichiers : - sudo mkdir -p /etc/esp/ssl- sudo cp server.* /etc/esp/ssl/
- Suivez les instructions applicables à votre type de service pour effectuer un déploiement avec Docker. Lorsque vous exécutez le conteneur Docker d'ESP, utilisez la commande suivante : - 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 - Par rapport à la commande non SSL - docker run, la version SSL de la commande crée une configuration différente. Par exemple, la commande SSL :- installe le dossier contenant les fichiers de clé et CRT dans le conteneur en utilisant --volume;
- utilise --ssl_port=443pour indiquer à ESP d'activer SSL sur le port443;
- modifie l'option de mappage de port --publish.
 
- installe le dossier contenant les fichiers de clé et CRT dans le conteneur en utilisant 
Mettre à jour les certificats SSL
Il est important de mettre régulièrement à jour vos certificats SSL. Pour mettre à jour vos certificats SSL, procédez comme suit:
- Créez des certificats et copiez-les dans des instances de VM, comme décrit à l'étape 1 ci-dessus.
- Copiez les nouveaux certificats dans le répertoire /etc/esp/ssl, comme décrit à l'étape 3 ci-dessus.
- Arrêtez et redémarrez le conteneur ESP à l'aide de la commande sudo docker run, comme décrit à l'étape 4 ci-dessus.
Tester le port SSL
Pour faciliter les tests, définissez les variables d’environnement suivantes :
- Définissez IP_ADDRESS sur l'adresse IP de l'instance Compute Engine avec le nouveau certificat SSL. 
- Définissez ENDPOINTS_KEY sur une clé API valide. 
Une fois le port SSL activé, vous pouvez utiliser HTTPS pour envoyer des requêtes à Extensible Service Proxy. Si votre certificat est autosigné, utilisez -k pour activer l'option non sécurisée dans la commande curl :
curl -k -d '{"message":"hello world"}' -H "content-type:application/json" \
https://IP_ADDRESS:443/echo?key=ENDPOINTS_KEYVous pouvez également générer le certificat au format pem et vous servir de l'option --cacert pour utiliser le certificat autosigné dans le fichier curl, comme indiqué ci-dessous :
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