Halaman ini menjelaskan cara mengaktifkan port Secure Sockets Layer (SSL) saat men-deploy Extensible Service Proxy (ESP) dengan Google Kubernetes Engine, Kubernetes, atau Compute Engine. Anda mungkin ingin mengaktifkan port SSL untuk layanan Endpoint yang di-deploy untuk beberapa kasus penggunaan. Misalnya, jika menggunakan fitur transcoding gRPC, Anda mungkin ingin layanan Anda menerima permintaan HTTP 1.1 dan gRPC pada port yang sama.
Sebelum memulai, pastikan Anda telah meninjau tutorial untuk jenis dan lingkungan layanan yang dipilih, serta mengetahui cara men-deploy ESP tanpa SSL.
Mengonfigurasi kunci dan sertifikat SSL
Untuk mengonfigurasi port SSL agar menayangkan permintaan HTTPS, ikuti langkah-langkah di bawah:
Pastikan file kunci SSL Anda diberi nama
nginx.key
dan file sertifikat diberi namanginx.crt
. Untuk pengujian, Anda dapat membuatnginx.key
dannginx.cert
yang ditandatangani sendiri menggunakan OpenSSL dengan perintah berikut:openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout ./nginx.key -out ./nginx.crt
Tentukan
CN
dansubjectAltName
di sertifikat server Anda. Nilai atribut ini harus cocok dengan DNS atau IP yang digunakan oleh klien untuk memanggil layanan Anda; jika tidak, handshake SSL akan gagal.
Mengaktifkan SSL untuk ESP di Kubernetes
Guna mengaktifkan port SSL untuk ESP di Kubernetes:
Buat rahasia Kubernetes dengan kunci SSL dan sertifikat Anda:
kubectl create secret generic nginx-ssl \ --from-file=./nginx.crt --from-file=./nginx.key
Edit file konfigurasi Kubernetes, misalnya,
esp_echo_gke.yaml
, seperti yang ditunjukkan dalam cuplikan berikut:Catatan: Contoh konfigurasi menampilkan baris yang perlu diedit. Untuk men-deploy file ke Cloud Endpoints, Anda harus menyiapkan file konfigurasi lengkap.
Pasang secret Kubernetes yang Anda buat sebagai volume, dengan mengikuti petunjuk di halaman volume Kubernetes.
Mulai ESP seperti yang dijelaskan dalam Menentukan opsi startup untuk ESP, tetapi pastikan Anda menambahkan tanda startup
--ssl_port
untuk mengaktifkan port SSL. (Perhatikan bahwa port SSL default adalah 443.)Mulai layanan dengan file konfigurasi Kubernetes yang telah diupdate menggunakan
kubectl
.kubectl apply -f esp_echo_gke.yaml
Memperbarui sertifikat SSL
Penting untuk memperbarui sertifikat SSL Anda secara berkala. Untuk memperbarui sertifikat SSL, Anda harus melakukan langkah-langkah berikut:
- Buat sertifikat baru, seperti yang dijelaskan pada Langkah 1 di atas.
- Pasang sertifikat baru ke secret Kubernetes, seperti yang dijelaskan pada Langkah 3 di atas.
- Update deployment Kubernetes ESP, seperti yang dijelaskan pada Langkah 5 di atas.
Mengaktifkan SSL untuk ESP di Compute Engine
Untuk mengaktifkan SSL di Compute Engine, salin file nginx.key
dan nginx.crt
terlebih dahulu ke folder /etc/nginx/ssl
instance Compute Engine Anda dengan mengikuti langkah-langkah berikut:
Jalankan perintah berikut dan ganti INSTANCE_NAME dengan nama instance Compute Engine Anda:
gcloud compute scp nginx.* INSTANCE-NAME
Hubungkan ke instance menggunakan
ssh
.gcloud compute ssh INSTANCE-NAME
Dalam kotak instance VM, buat direktori dan salin dalam file:
sudo mkdir -p /etc/esp/ssl
sudo cp server.* /etc/esp/ssl/
Ikuti petunjuk untuk jenis layanan Anda agar dapat di-deploy dengan Docker. Saat Anda menjalankan container Docker ESP, gunakan perintah ini:
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
Dibandingkan dengan perintah
docker run
non-SSL, versi perintah SSL membuat konfigurasi yang berbeda. Misalnya, perintah SSL:- Pasang folder yang berisi kunci dan file CRT ke container menggunakan
--volume
- Menggunakan
--ssl_port=443
untuk memberi tahu ESP agar mengaktifkan SSL pada port443
. - Mengubah tanda pemetaan port
--publish
.
- Pasang folder yang berisi kunci dan file CRT ke container menggunakan
Memperbarui sertifikat SSL
Penting untuk memperbarui sertifikat SSL Anda secara berkala. Untuk memperbarui sertifikat SSL, Anda harus melakukan langkah-langkah berikut:
- Buat sertifikat baru dan salin ke instance VM, seperti yang dijelaskan pada Langkah 1 di atas.
- Salin sertifikat baru ke direktori
/etc/esp/ssl
, seperti yang dijelaskan pada Langkah 3 di atas. - Hentikan dan mulai ulang container ESP menggunakan perintah
sudo docker run
, seperti yang dijelaskan pada Langkah 4 di atas.
Menguji port SSL
Untuk mempermudah pengujian, tetapkan variabel lingkungan berikut:
Tetapkan IP_ADDRESS ke alamat IP instance Compute Engine dengan sertifikat SSL baru.
Setel ENDPOINTS_KEY ke kunci API yang valid.
Setelah port SSL diaktifkan, Anda dapat menggunakan HTTPS untuk mengirim permintaan ke Extensible Service Proxy. Jika sertifikat Anda ditandatangani sendiri, gunakan -k
untuk mengaktifkan opsi yang tidak aman di curl
:
curl -k -d '{"message":"hello world"}' -H "content-type:application/json" \ https://IP_ADDRESS:443/echo?key=ENDPOINTS_KEY
Atau, buat sertifikat dalam format pem
dan gunakan opsi --cacert
untuk menggunakan sertifikat yang ditandatangani sendiri di curl
, seperti yang ditunjukkan di bawah ini:
openssl x509 -in nginx.crt -out nginx.pem -outform PEM
curl --cacert "./nginx.pem" -d '{"message":"hello world"}' -H "content-type:application/json" \ https://IP_ADDRESS:443/echo?key=ENDPOINTS_KEY