Menggunakan SNI dengan Edge

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Server Name Indication (SNI) memungkinkan beberapa target HTTPS ditayangkan dari alamat IP dan port yang sama tanpa mengharuskan target tersebut menggunakan sertifikat TLS yang sama. Jika SNI diaktifkan di klien, klien akan meneruskan nama host endpoint target sebagai bagian dari handshake TLS awal. Hal ini memungkinkan server TLS menentukan sertifikat TLS mana yang harus digunakan untuk memvalidasi permintaan.

Misalnya, jika target permintaan adalah https://example.com/request/path, klien TLS akan menambahkan ekstensi server_name ke permintaan TLS handshake, seperti yang ditunjukkan di bawah:

Edge mendukung SNI untuk:

  • Permintaan dari aplikasi klien ke proxy API. Dalam skenario ini, Edge bertindak sebagai server TLS
  • Permintaan dari Edge ke backend. Dalam skenario ini, Edge bertindak sebagai klien TLS.

Untuk informasi tambahan tentang SNI, lihat:

Mendukung SNI untuk permintaan ke proxy API di Edge

Dukungan SNI untuk permintaan ke proxy API dikontrol oleh alias host dan host virtual.

Tentang host virtual dan alias host

Dengan Edge, host virtual menentukan alamat IP dan port, atau nama dan port DNS, tempat proxy API diekspos dan, secara luas, URL yang digunakan aplikasi untuk mengakses proxy API. Alamat IP/nama DNS sesuai dengan Edge Router, dan nomor port adalah port terbuka di Router.

Saat membuat host virtual, Anda juga menentukan alias host virtual. Biasanya ini adalah nama DNS host virtual. Sebagai bagian dari penentuan proxy API yang menangani permintaan, Router membandingkan header Host permintaan yang masuk dengan daftar alias host yang tersedia yang ditentukan oleh semua host virtual.

Kombinasi alias host dan nomor port untuk host virtual harus unik untuk semua host virtual dalam penginstalan Edge. Artinya, beberapa host virtual dapat menggunakan nomor port yang sama jika memiliki alias host yang berbeda.

Host virtual juga menentukan apakah proxy API diakses menggunakan protokol HTTP, atau oleh protokol HTTPS terenkripsi menggunakan TLS. Saat mengonfigurasi host virtual untuk menggunakan HTTPS, kaitkan host virtual dengan keystore yang berisi sertifikat dan kunci pribadi yang digunakan oleh host virtual selama TLS handshaking.

Untuk informasi tambahan tentang host virtual, lihat:

Cara kerja SNI dengan alias host

SNI memungkinkan Anda memiliki beberapa host virtual yang ditentukan di port yang sama, masing-masing dengan sertifikat dan kunci TLS yang berbeda. Edge kemudian menentukan host virtual, dan pasangan kunci/sertifikat yang digunakan oleh TLS, berdasarkan ekstensi server_name dalam permintaan handshake TLS.

Edge Router membaca ekstensi server_name dalam permintaan TLS handshake, lalu menggunakannya untuk menelusuri alias host dari semua host virtual. Jika Router mendeteksi kecocokan dengan alias host, Router akan menggunakan sertifikat dan kunci TLS dari host virtual yang terkait dengan alias host. Jika tidak ditemukan kecocokan, handshake TLS akan gagal.

Daripada handshake TLS gagal, Anda dapat menentukan pasangan kunci/sertifikat default, seperti yang dijelaskan di bagian berikutnya.

Menentukan pasangan kunci/sertifikat default di Edge for the Cloud

Apigee menyediakan sertifikat TLS dan kunci pribadi untuk mendukung HTTPS. Meskipun banyak pelanggan lebih memilih untuk menggunakan sertifikat dan kunci pribadi mereka sendiri pada waktu deployment, Anda dapat men-deploy API menggunakan sertifikat dan kunci Apigee.

Di Edge for the Cloud, jika Router tidak dapat mencocokkan header SNI dengan alias host atau jika klien tidak mendukung SNI, Router akan menggunakan sertifikat default yang disediakan oleh Apigee, yaitu *.apigee.net.

Menentukan pasangan kunci/sertifikat default di Edge untuk Private Cloud

Di Edge untuk Cloud Pribadi, jika tidak ada kecocokan antara ekstensi server_name dan alias host dari semua host virtual, atau jika klien yang meminta tidak mendukung SNI, Anda dapat mengonfigurasi Router untuk menggunakan sertifikat/kunci dari host virtual default di port. Host virtual default ditentukan oleh kombinasi nama organisasi, nama lingkungan, dan nama host virtual, dalam bentuk:

orgName_envName_vhName

Router menggunakan sertifikat/kunci dari kombinasi orgName_envName_vhName yang muncul pertama dalam urutan abjad. Misalnya, permintaan masuk melalui port 443, dan ada dua host virtual yang ditentukan untuk org example di lingkungan prod:

  • nama host virtual = default
  • nama host virtual = test

Dalam contoh ini, Router menggunakan sertifikat/kunci dari host virtual bernama default karena example_prod_default menurut abjad terletak sebelum example_prod_test.

Untuk mengaktifkan host virtual default:

  1. Di node Router pertama, edit /opt/apigee/customer/application/router.properties. Jika file tersebut tidak ada, buat file tersebut.
  2. Tambahkan properti berikut ke file agar Anda dapat menentukan host virtual default:
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. Mulai Ulang Router:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. Ulangi langkah-langkah ini di semua Router yang tersisa.

Daripada menggunakan sertifikat/kunci dari host virtual default, Anda dapat menentukan sertifikat/kunci default di Router secara eksplisit. Gunakan prosedur berikut untuk menentukan pasangan kunci/sertifikat default eksplisit:

  1. Di node Router pertama, salin sertifikat dan kunci pribadi ke lokasi di node Router yang dapat diakses oleh pengguna apigee. Misalnya, /opt/apigee/customer/application.
  2. Ubah kepemilikan file menjadi 'apigee. user:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. Edit /opt/apigee/customer/application/router.properties. Jika file tersebut tidak ada, buat file tersebut.
  4. Tambahkan properti berikut ke file agar Anda dapat menentukan sertifikat/kunci default:
    conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  5. Tetapkan properti berikut di router.properties untuk menentukan lokasi sertifikat dan kunci:
    conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem
    conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
  6. Mulai Ulang Router:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. Ulangi langkah-langkah ini di semua Router yang tersisa.

Mendukung SNI untuk permintaan dari Edge ke backend

Edge mendukung penggunaan SNI dari Message Processor untuk menargetkan endpoint di deployment Apigee Edge untuk Cloud dan Private Cloud. Secara default, SNI diaktifkan di Edge Message Processors untuk Cloud dan dinonaktifkan di Private Cloud.

Menggunakan SNI ke backend di Edge untuk Private Cloud

Untuk Edge untuk Cloud Pribadi, agar kompatibel dengan backend target yang ada, Apigee menonaktifkan SNI secara default. Jika backend target dikonfigurasi untuk mendukung SNI, Anda dapat mengaktifkan fitur ini seperti yang dijelaskan di bawah untuk versi Edge Anda.

Tidak diperlukan konfigurasi khusus Edge lainnya. Jika lingkungan target Anda dikonfigurasi untuk SNI, Edge akan mendukungnya. Edge otomatis mengekstrak nama host dari URL permintaan dan menambahkannya ke permintaan handshake TLS.

Mengaktifkan SNI antara Edge dan backend untuk Edge versi 4.15.07.0x

Gunakan prosedur berikut untuk mengaktifkan SNI:

  1. Pada node Message Processor pertama, buka file /opt/apigee4/conf/apigee/message-processor/system.properties di editor.
  2. Tetapkan properti berikut ke benar (true) di system.properties:
    jsse.enableSNIExtension=true
  3. Mulai ulang Pemroses Pesan:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. Ulangi langkah-langkah ini di semua Pemroses Pesan yang tersisa.

Mengaktifkan SNI antara Edge dan backend untuk Edge versi 4.16.01 dan yang lebih baru

Gunakan prosedur berikut untuk mengaktifkan SNI:

  1. Pada node Message Processor pertama, edit /opt/apigee/customer/application/message-processor.properties. Jika file tersebut tidak ada, buat file tersebut.
  2. Tambahkan properti berikut ke file:
    conf_system_jsse.enableSNIExtension=true
  3. Mulai ulang Message Processor:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. Ulangi langkah-langkah ini di semua Pemroses Pesan yang tersisa.