Esta página explica como ativar uma porta da camada de ligação segura (SSL) ao implementar o proxy de serviço extensível (ESP) com o Google Kubernetes Engine, o Kubernetes ou o Compute Engine. Pode querer ativar uma porta SSL para o seu serviço de Endpoints implementado para alguns exemplos de utilização. Por exemplo, se estiver a usar a funcionalidade de transcrição do gRPC, pode querer que o seu serviço receba pedidos HTTP 1.1 e gRPC na mesma porta.
Antes de começar, certifique-se de que já reviu os tutoriais para o tipo de serviço e o ambiente escolhidos, e sabe como implementar o ESP sem SSL.
Configurar as chaves e os certificados SSL
Para configurar a porta SSL para processar pedidos HTTPS, siga os passos abaixo:
- Verifique se o nome do ficheiro de chave SSL é - nginx.keye o nome do ficheiro de certificado é- nginx.crt. Para testes, pode gerar um- nginx.keyautoassinado e- nginx.certatravés do 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 destes atributos deve corresponder ao DNS ou ao IP usado pelos clientes para chamar o seu serviço; caso contrário, a sincronização SSL falha.
Ativar SSL para o ESP no Kubernetes
Para ativar a porta SSL para o ESP no Kubernetes:
- Crie um segredo do Kubernetes com a sua chave e certificado SSL: - kubectl create secret generic nginx-ssl \ --from-file=./nginx.crt --from-file=./nginx.key 
- Edite os ficheiros de configuração do Kubernetes, por exemplo, - esp_echo_gke.yaml, conforme mostrado no fragmento seguinte:- Nota: o exemplo de configuração apresenta as linhas que têm de ser editadas. Para implementar o ficheiro nos Cloud Endpoints, é necessário o ficheiro de configuração completo. 
- Monte os segredos do Kubernetes que criou como volumes, seguindo as instruções na página de volumes do Kubernetes. 
- Inicie o ESP conforme descrito em Especificar opções de arranque para o ESP, mas certifique-se de que adiciona a flag de arranque - --ssl_portpara ativar a porta SSL. (Tenha em atenção que a porta SSL predefinida é 443.)
- Inicie o serviço com o ficheiro de configuração do Kubernetes atualizado através de - kubectl.- kubectl apply -f esp_echo_gke.yaml 
Atualize certificados SSL
É importante atualizar os seus certificados SSL periodicamente. Para atualizar os seus certificados SSL, tem de seguir estes passos:
- Crie novos certificados, conforme descrito no Passo 1 acima.
- Monte os novos certificados nos segredos do Kubernetes, conforme descrito no Passo 3 acima.
- Atualize a implementação do Kubernetes do ESP, conforme descrito no passo 5 acima.
Ativar SSL para o ESP no Compute Engine
Para ativar o SSL no Compute Engine, copie primeiro os ficheiros nginx.key e nginx.crt para a pasta /etc/nginx/ssl da instância do Compute Engine através dos seguintes passos:
- Execute o seguinte comando e substitua INSTANCE_NAME pelo nome da sua instância do Compute Engine: - gcloud compute scp nginx.* INSTANCE-NAME 
- Ligue-se à instância através de - ssh.- gcloud compute ssh INSTANCE-NAME 
- Na caixa da VM da instância, crie o diretório e copie os ficheiros: - sudo mkdir -p /etc/esp/ssl- sudo cp server.* /etc/esp/ssl/
- Siga as instruções para o seu tipo de serviço para fazer a implementação com o Docker. Quando executar o contentor Docker do 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 os ficheiros KEY e CRT no contentor através do comando
--volume
- Usa --ssl_port=443para indicar ao ESP que ative o SSL na porta443.
- Altera a flag de mapeamento de portas --publish.
 
- Monta a pasta com os ficheiros KEY e CRT no contentor através do comando
Atualize certificados SSL
É importante atualizar os seus certificados SSL periodicamente. Para atualizar os seus certificados SSL, tem de seguir estes passos:
- Crie novos certificados e copie-os para instâncias de VM, conforme descrito no Passo 1 acima.
- Copie os novos certificados para o diretório /etc/esp/ssl, conforme descrito no passo 3 acima.
- Pare e reinicie o contentor do ESP através do comando sudo docker run, conforme descrito no passo 4 acima.
Testar a porta SSL
Para facilitar os testes, defina as seguintes variáveis de ambiente:
- Defina IP_ADDRESS para o endereço IP da instância do Compute Engine com o novo certificado SSL. 
- Defina ENDPOINTS_KEY como uma chave da API válida. 
Assim que a porta SSL estiver ativada, pode usar HTTPS para enviar pedidos para o
Extensible Service Proxy. Se o seu certificado for autoassinado, 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_KEYEm alternativa, gere o certificado no formato pem e use a opção --cacert para usar o certificado autoassinado em curl, conforme 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