Questa pagina spiega come attivare una porta Secure Sockets Layer (SSL) durante il deployment di Extensible Service Proxy (ESP) con Google Kubernetes Engine, Kubernetes o Compute Engine. Per alcuni casi d'uso, potresti voler attivare una porta SSL per il servizio Endpoints di cui è stato eseguito il deployment. Ad esempio, se utilizzi la funzionalità di transcodifica di gRPC, potresti voler che il tuo servizio riceva richieste HTTP 1.1 e gRPC sulla stessa porta.
Prima di iniziare, assicurati di aver già esaminato i tutorial per il tipo di servizio e l'ambiente che hai scelto e di sapere come eseguire il deployment di ESP senza SSL.
Configurazione di chiavi e certificati SSL
Per configurare la porta SSL in modo che gestisca le richieste HTTPS, segui questi passaggi:
- Verifica che il file della chiave SSL si chiami - nginx.keye che il file del certificato si chiami- nginx.crt. Per i test, puoi generare un- nginx.keye un- nginx.certautofirmati utilizzando OpenSSL con il seguente comando:- openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout ./nginx.key -out ./nginx.crt 
- Specifica sia - CNsia- subjectAltNamenel certificato server. Il valore di questi attributi deve corrispondere al DNS o all'IP utilizzato dai client per chiamare il servizio; in caso contrario, l'handshake SSL non andrà a buon fine.
Abilitazione di SSL per ESP su Kubernetes
Per abilitare la porta SSL per ESP su Kubernetes:
- Crea un secret Kubernetes con la chiave e il certificato SSL: - kubectl create secret generic nginx-ssl \ --from-file=./nginx.crt --from-file=./nginx.key 
- Modifica i file di configurazione di Kubernetes, ad esempio - esp_echo_gke.yaml, come mostrato nel seguente snippet:- Nota: l'esempio di configurazione mostra le righe che devono essere modificate. Per eseguire il deployment del file in Cloud Endpoints, è necessario il file di configurazione completo. 
- Monta i secret Kubernetes che hai creato come volumi, seguendo le istruzioni nella pagina Volumi Kubernetes. 
- Avvia ESP come descritto in Specifica delle opzioni di avvio per ESP, ma assicurati di aggiungere il flag di avvio - --ssl_portper attivare la porta SSL. Tieni presente che la porta SSL predefinita è la 443.
- Avvia il servizio con il file di configurazione Kubernetes aggiornato utilizzando - kubectl.- kubectl apply -f esp_echo_gke.yaml 
Aggiorna i certificati SSL
È importante aggiornare periodicamente i certificati SSL. Per aggiornare i certificati SSL, devi svolgere i seguenti passaggi:
- Crea nuovi certificati, come descritto nel passaggio 1.
- Monta i nuovi certificati nei secret Kubernetes, come descritto nel passaggio 3 sopra.
- Aggiorna il deployment Kubernetes di ESP, come descritto nel passaggio 5 precedente.
Abilitazione di SSL per ESP su Compute Engine
Per abilitare SSL su Compute Engine, copia prima i file nginx.key e nginx.crt nella
cartella /etc/nginx/ssl dell'istanza Compute Engine seguendo questi passaggi:
- Esegui il comando seguente e sostituisci INSTANCE_NAME con il nome della tua istanza Compute Engine: - gcloud compute scp nginx.* INSTANCE-NAME 
- Connettiti all'istanza utilizzando - ssh.- gcloud compute ssh INSTANCE-NAME 
- Nella casella della VM dell'istanza, crea la directory e copia i file: - sudo mkdir -p /etc/esp/ssl- sudo cp server.* /etc/esp/ssl/
- Segui le istruzioni per il tuo tipo di servizio per eseguire il deployment con Docker. Quando esegui il container Docker ESP, utilizza questo 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 - Rispetto al comando - docker runnon SSL, la versione SSL del comando crea una configurazione diversa. Ad esempio, il comando SSL:- Monta la cartella con i file della chiave e CRT nel container utilizzando
--volume
- Utilizza --ssl_port=443per indicare a ESP di abilitare SSL sulla porta443.
- Modifica il flag di mappatura delle porte --publish.
 
- Monta la cartella con i file della chiave e CRT nel container utilizzando
Aggiorna i certificati SSL
È importante aggiornare periodicamente i certificati SSL. Per aggiornare i certificati SSL, devi svolgere i seguenti passaggi:
- Crea nuovi certificati e copiali nelle istanze VM, come descritto nel passaggio 1.
- Copia i nuovi certificati nella directory /etc/esp/ssl, come descritto nel passaggio 3.
- Arresta e riavvia il container ESP utilizzando il comando sudo docker run, come descritto nel passaggio 4.
Test della porta SSL
Per semplificare il test, imposta le seguenti variabili di ambiente:
- Imposta IP_ADDRESS sull'indirizzo IP dell'istanza Compute Engine con il nuovo certificato SSL. 
- Imposta ENDPOINTS_KEY su una chiave API valida. 
Una volta attivata la porta SSL, puoi utilizzare HTTPS per inviare richieste a
Extensible Service Proxy. Se il certificato è autofirmato, utilizza -k per attivare l'opzione non sicura in curl:
curl -k -d '{"message":"hello world"}' -H "content-type:application/json" \
https://IP_ADDRESS:443/echo?key=ENDPOINTS_KEYIn alternativa, genera il certificato in formato pem e utilizza l'opzione --cacert per utilizzare il certificato autofirmato in curl, come mostrato di seguito:
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