Nesta página, você aprenderá como ativar uma porta Secure Sockets Layer (SSL) ao implantar o Extensible Service Proxy (ESP) com o Google Kubernetes Engine, o Kubernetes ou o Compute Engine. Talvez você queira ativar uma porta SSL para o serviço do Endpoints implantado em alguns casos de uso. Por exemplo, se você estiver usando o recurso de transcodificação do gRPC, talvez queira que o serviço receba solicitações HTTP 1.1 e gRPC na mesma porta
Antes de começar, leia os tutoriais sobre o tipo de serviço e ambiente escolhidos e saiba como implantar o ESP sem o SSL.
Como configurar chaves e certificados SSL
Para configurar a porta SSL para exibir solicitações HTTPS, siga as etapas abaixo:
- Verifique se o nome do arquivo de chave SSL é - nginx.keye se o arquivo do certificado se chama- nginx.crt. Para o teste, você pode gerar- nginx.keye- nginx.certassinados automaticamente usando o OpenSSL com o seguinte comando:- openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout ./nginx.key -out ./nginx.crt 
- Especifique - CNe- subjectAltNameno certificado do servidor. O valor desses atributos precisa corresponder ao DNS ou ao IP usado pelos clientes para chamar o serviço. Caso contrário, o handshake SSL falhará.
Como ativar o SSL para ESP no Kubernetes
Para ativar a porta SSL para ESP no Kubernetes, siga as seguintes etapas:
- Crie um secret do Kubernetes com o certificado e a chave SSL: - kubectl create secret generic nginx-ssl \ --from-file=./nginx.crt --from-file=./nginx.key 
- Edite os arquivos de configuração do Kubernetes, por exemplo, - esp_echo_gke.yaml, conforme mostrado no snippet a seguir:- Observação: a amostra de configuração exibe as linhas que precisam ser editadas. Para implantar o arquivo no Cloud Endpoints é necessário o arquivo de configuração completo. 
- Ative os secrets do Kubernetes criados como volumes seguindo as instruções da página de volumes do Kubernetes (em inglês). 
- Inicie o ESP conforme descrito em Como especificar opções de inicialização para o ESP, mas certifique-se de incluir a sinalização de inicialização - --ssl_portpara ativar a porta SSL. A padrão é 443.
- Inicie o serviço com o arquivo de configuração atualizado do Kubernetes usando - kubectl.- kubectl apply -f esp_echo_gke.yaml 
Atualizar certificados SSL
É importante atualizar o certificado SSL periodicamente. Para atualizar seus certificados SSL, é necessário executar as seguintes etapas:
- Crie novos certificados, conforme descrito na etapa 1 acima.
- Ative os novos certificados nos secrets do Kubernetes, conforme descrito na etapa 3 acima.
- Atualize a implantação do Kubernetes ESP, conforme descrito na etapa 5 acima.
Como ativar o SSL para ESP no Compute Engine
Para ativar o SSL no Compute Engine, primeiro copie os arquivos nginx.key e nginx.crt para a
pasta /etc/nginx/ssl da instância do Compute Engine usando as seguintes etapas:
- Execute o seguinte comando e substitua INSTANCE_NAME pelo nome da instância do Compute Engine: - gcloud compute scp nginx.* INSTANCE-NAME 
- Conecte-se à instância usando - ssh.- gcloud compute ssh INSTANCE-NAME 
- Na caixa "VM da instância", crie o diretório e copie os arquivos: - sudo mkdir -p /etc/esp/ssl- sudo cp server.* /etc/esp/ssl/
- Siga as instruções para o tipo de serviço a implantar com o Docker. Quando você for executar o contêiner do Docker ESP, use este comando: - 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 - Em comparação com o comando - docker runnão SSL, a versão SSL do comando cria uma configuração diferente. Por exemplo, o comando SSL:- monta a pasta com arquivos de chave e CRT no contêiner usando
--volume;
- usa --ssl_port=443para informar ao ESP para ativar o SSL na porta443;
- altera a sinalização de mapeamento de porta --publish.
 
- monta a pasta com arquivos de chave e CRT no contêiner usando
Atualizar certificados SSL
É importante atualizar o certificado SSL periodicamente. Para atualizar seus certificados SSL, é necessário executar as seguintes etapas:
- Crie novos certificados e copie-os em instâncias de VM, conforme descrito na etapa 1 acima.
- Copie os novos certificados para o diretório /etc/esp/ssl, conforme descrito na etapa 3 acima.
- Interrompa e reinicie o contêiner ESP usando o comando sudo docker run, conforme descrito na etapa 4 acima.
Teste da porta SSL
Para facilitar o teste, defina as seguintes variáveis de ambiente:
- Defina IP_ADDRESS como o endereço IP da instância do Compute Engine com o novo certificado SSL. 
- Defina ENDPOINTS_KEY como uma chave de API válida. 
Com a porta SSL ativada, você pode usar HTTPS para enviar solicitações ao Extensible Service Proxy. Se o certificado for assinado automaticamente, use -k para ativar a opção não segura em curl:
curl -k -d '{"message":"hello world"}' -H "content-type:application/json" \
https://IP_ADDRESS:443/echo?key=ENDPOINTS_KEYComo alternativa, gere o certificado no formato pem e use a opção --cacert para usar o certificado assinado automaticamente em curl, como mostrado abaixo:
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