Dukungan SSL App Engine menawarkan endpoint SSL yang terdistribusi secara global dan load balancing bawaan untuk melayani aplikasi Anda dengan aman, andal, dan cepat ke audiens di seluruh dunia.
Secara default, koneksi HTTPS di domain kustom Anda diaktifkan secara otomatis menggunakan sertifikat SSL terkelola. Setelah memetakan domain kustom ke aplikasi dan memperbarui data DNS Anda, App Engine akan menyediakan sertifikat SSL terkelola, memperbarui sertifikat, dan mencabutnya saat Anda menghapus domain kustom dari aplikasi Anda.
Sebelum memulai
Pastikan Anda telah menyiapkan domain kustom di project App Engine Anda.
Jika Anda menggunakan Cloud Load Balancing dan serverless network endpoint group (NEGS) untuk merutekan traffic ke aplikasi App Engine, sebaiknya petakan domain kustom ke load balancer, bukannya langsung ke aplikasi, dan gunakan sertifikat SSL yang dikelola Google yang dibuat untuk load balancer. Dengan demikian, Anda tidak perlu mengelola sertifikat SSL terpisah untuk setiap aplikasi serverless. Dengan Cloud Load Balancing, Anda dapat menetapkan kebijakan SSL yang mengontrol fitur SSL yang dinegosiasikan oleh load balancer dengan klien.
Untuk informasi lebih lanjut, lihat halaman berikut:
- Menggunakan sertifikat SSL yang dikelola Google
- Menggunakan sertifikat SSL yang dikelola sendiri
- Kebijakan SSL
Perhatikan batasan berikut:
- Sebaiknya gunakan kontrol masuk sehingga aplikasi Anda hanya menerima permintaan yang dikirim dari load balancer (dan VPC jika Anda menggunakannya). Jika tidak, pengguna dapat menggunakan URL App Engine aplikasi Anda untuk mengabaikan load balancer, kebijakan keamanan Google Cloud Armor, sertifikat SSL, dan kunci pribadi yang diteruskan melalui load balancer.
Memverifikasi sertifikat terkelola
Setelah Anda menyiapkan domain kustom dan memperbarui data DNS, sertifikat SSL terkelola akan otomatis diberikan dalam waktu beberapa menit. Pemilihan certificate authority dilakukan secara otomatis; sertifikat terkelola ditandatangani oleh Layanan Kepercayaan Google (GTS) atau Let's Encrypt.
Untuk memverifikasi bahwa sertifikat telah disediakan:
Di Konsol Google Cloud, buka App Engine > Setelan > Domain Kustom:
SSL security ditampilkan sebagai Google-managed.
Memecahkan masalah sertifikat SSL terkelola
Anda mungkin harus memperbarui data DNS untuk domain kustom guna memverifikasi nama domain. App Engine tidak dapat menyediakan sertifikat untuk domain yang belum diverifikasi.
Anda dapat memeriksa status sertifikat dengan Admin API menggunakan permintaan AuthorizedCertificate.GET.
Jika sertifikat terkelola belum disediakan karena data DNS tidak tersedia, kolom
ManagedCertificate.ManagementStatus
mungkinFAILED_RETRYING_NOT_VISIBLE
. Verifikasi bahwa data DNS Anda sudah yang terbaru, tunggu beberapa menit, lalu coba lagi. Diperlukan waktu hingga 24 jam agar data DNS tersedia.Jika statusnya adalah
FAILED_PERMANENT
, berarti semua upaya perpanjangan gagal. Periksa setelan DNS, lalu perbarui pemetaan domain kustom dengan mengikuti langkah-langkah untuk memperbarui ke sertifikat SSL terkelola.
Mengupgrade ke sertifikat SSL terkelola
Sebelum mengupgrade ke sertifikat SSL yang dikelola Google, perhatikan bahwa sertifikat terkelola tidak mendukung pemetaan karakter pengganti.
Jika Anda menggunakan subdomain dan sertifikat diterbitkan oleh Let's Encrypt, ada batas 50 sertifikat terkelola per minggu untuk setiap domain dasar. Jika batas ini tercapai, App Engine akan terus mencoba menerbitkan sertifikat terkelola hingga semua permintaan terpenuhi.
Untuk berpindah dari sertifikat SSL Anda sendiri ke sertifikat SSL yang dikelola Google, atau untuk menambahkan sertifikat SSL terkelola ke aplikasi yang sudah ada dengan domain kustom, perbarui pemetaan domain Anda:
Di Konsol Google Cloud, buka App Engine > Setelan > Domain Kustom:
Pilih domain yang ingin Anda amankan, lalu klik Enable managed security.
Menonaktifkan sertifikat SSL terkelola
Untuk menonaktifkan sertifikat SSL terkelola:
Di Konsol Google Cloud, buka App Engine > Setelan > Domain Kustom:
Pilih domain, lalu klik Disable managed security.
Menggunakan sertifikat SSL Anda sendiri
Anda dapat menggunakan sertifikat sendiri daripada menggunakan sertifikat SSL terkelola. Jika sertifikat Anda tidak memiliki bukti transparansi, aplikasi Anda dapat menampilkan peringatan SSL di Chrome dikarenakan penerapan bukti transparansi sertifikat. Untuk mengetahui informasi selengkapnya tentang bukti transparansi sertifikat dan cara mematuhi, baca Menerapkan Transparansi Sertifikat.
Untuk menggunakan dan mengelola sertifikat SSL sendiri, bukan sertifikat yang dikelola Google:
Pastikan Anda sudah menyiapkan domain kustom di project App Engine Anda.
Dapatkan sertifikat untuk domain Anda dari certificate authority (CA) pilihan Anda. Prosedur persisnya dapat bervariasi tergantung pada otoritasnya.
Konversikan file kunci pribadi dan sertifikat SSL Anda ke dalam format yang didukung oleh App Engine. Sebelum dapat mengupload file, kunci pribadi Anda harus dikonversi menjadi kunci pribadi RSA dan sertifikat SSL Anda harus digabungkan menjadi satu file.
Pastikan Anda memiliki izin yang tepat di Konsol Google Cloud dan kepemilikan terverifikasi (langkah 3) atas semua domain terkait atau domain induknya. Contoh:
- Jika sertifikat ini ditujukan untuk
www.example.com
, Anda dapat memverifikasi kepemilikanwww.example.com
atauexample.com
. - Jika sertifikat ditujukan untuk
www.example.com
dansub.example.com
, Anda dapat memverifikasi kepemilikanwww.example.com
dansub.example.com
, atauexample.com
. - Jika sertifikat ditujukan untuk
*.example.com
, Anda harus memverifikasi kepemilikanexample.com
.
- Jika sertifikat ini ditujukan untuk
Upload kunci pribadi dan sertifikat SSL Anda, lalu petakan domain ke aplikasi Anda:
-
Di Konsol Google Cloud, buka App Engine > Setelan > Sertifikat SSL:
-
Klik Upload a new certificate.
-
Upload sertifikat SSL gabungan Anda di bagian
PEM encoded X.509 public key certificate
, misalnyaconcat.crt
, lalu upload kunci pribadi RSA di bagian Kunci pribadi RSA yang dienkode PEM dan tidak dienkripsi, misalnyamyserver.key.pem
. - Klik Upload. Setiap sertifikat SSL yang Anda upload akan terlihat dan tersedia untuk digunakan oleh semua project Google Cloud lainnya, sehingga Anda tidak perlu mengupload sertifikat yang sama berulang kali.
- Pilih sertifikat yang ingin ditetapkan ke domain, lalu klik Simpan untuk menggunakan SSL untuk domain tersebut.
-
Uji perubahan dengan mengunjungi domain Anda di browser, menggunakan
https
, misalnya,https://www.example.com
.
Mentransfer pemetaan dari sertifikat penyajian ke sertifikat baru
Menjelang tanggal habis masa berlakunya, Anda harus mengupload sertifikat baru dan mentransfer pemetaan sertifikat lama yang ada ke sertifikat baru tersebut. Prosedur berikut mengasumsikan bahwa sertifikat yang ada belum habis masa berlakunya dan saat ini menyajikan domain kustom Anda.
Untuk mentransfer pemetaan dari sertifikat yang sedang beroperasi:
Dapatkan sertifikat baru untuk domain Anda dari certificate authority (CA) pilihan Anda.
Konversikan file kunci pribadi dan sertifikat SSL Anda ke dalam format yang didukung oleh App Engine.
Upload kunci pribadi RSA dan sertifikat SSL gabungan Anda:
-
Upload sertifikat SSL di halaman sertifikat SSL.
Buka Sertifikat SSL-
Klik Upload a new certificate.
-
Upload sertifikat SSL gabungan Anda pada Public key certificate X.509 yang dienkode PEM, misalnya
concat.crt
, lalu upload kunci pribadi RSA di bagian Kunci pribadi RSA yang dienkode PEM dan tidak dienkripsi, misalnyamyserver.key.pem
. - Klik Upload.
-
- Pilih sertifikat baru yang baru saja Anda tambahkan dari daftar sertifikat, lalu pilih domain yang disediakan oleh sertifikat lama.
- Klik Simpan untuk mentransfer pemetaan dari sertifikat lama ke sertifikat baru.
-
Mendapatkan sertifikat
Proses untuk mendapatkan sertifikat SSL akan bervariasi, bergantung pada certificate authority yang Anda gunakan. Petunjuk yang diberikan di sini mungkin perlu sedikit penyesuaian. Biasanya, setiap certificate authority memberikan petunjuk untuk memandu Anda dalam melakukan prosesnya.
Untuk memperoleh sertifikat agar dapat digunakan dengan aplikasi App Engine Anda:
Buat kunci pribadi dan permintaan penandatanganan sertifikat (CSR) menggunakan alat openssl:
Jalankan perintah berikut dari direktori tempat Anda ingin membuat file
server.csr
:openssl req -nodes -newkey rsa:2048 -keyout [MY_PRIVATE_KEY].key -out [MY_CSR].csr
dengan:
[MY_PRIVATE_KEY].key
adalah file yang dihasilkan untuk menyimpan kunci pribadi Anda. Contoh:myserver.key
[MY_CSR].csr
adalah file yang dihasilkan untuk permintaan pendaftaran sertifikat Anda. Contoh:server.csr
Jika diminta, masukkan informasi berikut:
- Kode negara 2 digit Anda, misalnya,
US
untuk Amerika Serikat. - Nama kota Anda.
- Nama perusahaan Anda. Anda dapat menggunakan nama sendiri jika tidak memiliki perusahaan.
- Unit organisasi Anda atau
NA
jika Anda tidak memilikinya. - Nama umum yang mewakili domain Anda, misalnya:
www.example.com
- Alamat email Anda.
Anda tidak perlu memberikan nilai lainnya, semuanya bersifat opsional.
- Kode negara 2 digit Anda, misalnya,
Tentukan certificate authority mana yang sesuai untuk Anda, lalu beli sertifikat. Misalnya, Anda dapat menggunakan: SSLMate, Thawte, Comodo, atau certificate authority lainnya.
Untuk mengetahui detail tentang jenis sertifikat yang didukung, lihat Dukungan App Engine untuk sertifikat SSL.
Saat CA meminta konten file CSR Anda, ikuti petunjuknya untuk menyalin dan menempelkan konten dari file
.csr
yang Anda buat sebelumnya, misalnyaserver.csr
.Ikuti perintah saat CA Anda meminta persetujuan pemilik domain.
Setelah Anda memberikan persetujuan pemilik domain, CA akan mengirimkan sertifikat kepada Anda, yang biasanya berupa file zip. Ekstrak file tersebut ke direktori yang berfungsi guna menggabungkan sertifikat tersebut untuk diupload ke App Engine.
Mengonversi kunci pribadi dan menggabungkan sertifikat SSL
Anda harus mengonversi kunci pribadi menjadi kunci pribadi RSA dan menggabungkan semua sertifikat SSL Anda, sebelum mengupload kunci pribadi dan sertifikat SSL ke App Engine.
Konversi file kunci pribadi yang Anda buat sebelumnya menjadi kunci pribadi RSA yang tidak dienkripsi. Misalnya, Anda dapat menjalankan perintah
openssl rsa
berikut:openssl rsa -in [MY_PRIVATE_KEY].key -out [MY_RSA_KEY].key.pem
dengan:
[MY_PRIVATE_KEY].key
adalah file yang dihasilkan yang berisi kunci pribadi Anda dan tempat penyimpanannya. Contoh:myserver.key
[MY_RSA_KEY].key
adalah file yang dihasilkan yang berisi kunci pribadi RSA yang tidak dienkripsi. Contoh:myserver.key.pem
Contoh:
openssl rsa -in myserver.key -out myserver.key.pem
Gabungkan semua file
.crt
dari CA Anda ke dalam satu file, menggunakan perintah berikut:cat [MY_DOMAIN_CERT].crt [MY_SecureServerCA].crt [MY_TrustCA].crt [MY_TrustExternalCARoot].crt > [MY_CONCAT_CERT].crt
di mana
[MY_DOMAIN_CERT].crt
adalah sertifikat untuk domain Anda. Contoh:www_example_com.crt
[MY_SecureServerCA].crt
,[MY_TrustCA].crt
, dan[MY_TrustExternalCARoot].crt
adalah file sertifikat lain yang disediakan oleh CA Anda.[MY_CONCAT_CERT].crt
adalah file gabungan yang berisi semua file sertifikat.crt
dari CA Anda. Contoh:concat.crt
Contoh:
cat www_example_com.crt AddTrustExternalCARoot.crt RSADomainValidationSecureServerCA.crt RSAAddTrustCA.crt > concat.crt
Verifikasi sertifikat SSL dan kunci pribadi Anda:
Untuk memverifikasi bahwa kunci pribadi dan sertifikat cocok, Anda dapat menggunakan perintah
openssl x509
danopenssl rsa
. Contoh:openssl x509 -noout -modulus -in concat.crt | openssl md5 openssl rsa -noout -modulus -in myserver.key.pem | openssl md5
Perintah openssl x509 dan openssl rsa akan menampilkan output yang sama.
Untuk memverifikasi bahwa sertifikat dan rantai CA-nya valid, Anda dapat menggunakan perintah openssl verify. Contoh:
openssl verify -verbose -CAfile concat.crt concat.crt
Jika sudah siap, Anda dapat mengupload kunci pribadi RSA dan sertifikat gabungan ke App Engine.
Dukungan App Engine untuk sertifikat SSL
App Engine mendukung jenis sertifikat berikut:
- Domain Tunggal/Nama Host
- Ditandatangani sendiri
- Karakter pengganti
- Nama Alternatif Subjek (SAN)/Multi-Domain
Diperlukan beberapa hal dari sertifikat dan kunci Anda:
- Kunci Pribadi dan Sertifikat harus diupload dalam format PEM.
- Kunci Pribadi tidak boleh dienkripsi.
- File sertifikat dapat berisi maksimal lima sertifikat; jumlah ini termasuk sertifikat berantai dan intermediate certificate.
- Semua nama subjek pada sertifikat host harus cocok atau merupakan subdomain dari domain terverifikasi pengguna.
- Kunci pribadi harus menggunakan enkripsi RSA.
- Modulus kunci maksimum yang diizinkan: 2048 bit
Jika sertifikat host memerlukan sertifikat berantai atau intermediate certificate, sebanyak yang diterbitkan Certificate Authority (CA), Anda harus menambahkan sertifikat berantai atau intermediate certificate ke akhir file sertifikat publik.
Beberapa fitur App Engine menggunakan subdomain khusus. Misalnya, aplikasi dapat menggunakan subdomain untuk menangani layanan aplikasi, atau untuk menangani berbagai versi aplikasi Anda. Untuk menggunakannya dengan SSL, sebaiknya Anda menyiapkan sertifikat SAN atau karakter pengganti. Sertifikat karakter pengganti hanya mendukung satu tingkat subdomain.
Menghapus sertifikat SSL kustom
Untuk berhenti menggunakan sertifikat SSL kustom, lakukan langkah-langkah berikut:
Di Konsol Google Cloud, buka halaman setelan Sertifikat SSL App Engine.
Klik sertifikat yang ingin dihapus dari domain Anda.
Batalkan pilihan nama domain yang tidak ingin dikaitkan lagi dengan sertifikat SSL-nya, lalu klik Simpan.
Menggunakan header Strict-Transport-Security
Untuk alasan keamanan, semua aplikasi harus menyarankan pada klien untuk menggunakan koneksi https
. Untuk memerintahkan browser agar lebih memilih https
daripada http
,
gunakan header Strict-Transport-Security
.
Melihat cipher dan versi TLS yang diaktifkan
Instal Network Mapper
nmap
di komputer Anda jika belum tersedia. Lihat https://nmap.org/ untuk petunjuk penginstalan.Untuk melihat versi TLS dan cipher yang diaktifkan untuk aplikasi Anda, masukkan perintah berikut:
nmap -sV --script ssl-enum-ciphers -p 443 HOSTNAME
Ganti
HOSTNAME
dengan nama host untuk aplikasi Anda. Anda dapat menggunakan domain kustom atau nama hostappspot.com
yang dibuat oleh App Engine untuk aplikasi Anda. Contoh:nmap -sV --script ssl-enum-ciphers -p 443 example.uc.r.appspot.com
Menonaktifkan cipher dan versi TLS
Jika menggunakan Cloud Load Balancing dan NEGS serverless untuk merutekan traffic ke aplikasi App Engine, Anda dapat menonaktifkan cipher atau versi TLS dengan menetapkan kebijakan keamanan SSL yang menentukan cipher dan versi TLS yang dapat digunakan untuk koneksi HTTPS atau SSL.
Langkah berikutnya
Jika Anda ingin Cloud Load Balancing untuk mengelola permintaan masuk ke domain kustom Anda, lihat Memigrasikan domain kustom App Engine ke Cloud Load Balancing.