Menggunakan SNI dengan Edge

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

Indikasi Nama Server (SNI) memungkinkan beberapa target HTTPS ditayangkan dari IP yang sama alamat dan portanya tanpa mengharuskan target tersebut untuk menggunakan sertifikat TLS yang sama. Ketika SNI di klien, klien itu meneruskan nama {i>host <i}endpoint target sebagai bagian dari TLS handshake. Cara ini memungkinkan server TLS menentukan sertifikat TLS mana yang harus digunakan untuk memvalidasi terhadap permintaan.

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

Edge mendukung SNI untuk:

  • Permintaan dari aplikasi klien ke proxy API. Dalam skenario ini, Edge bertindak sebagai TLS server
  • 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 Tepi

Dukungan SNI untuk permintaan ke proxy API dikontrol oleh alias host dan {i>host<i}.

Tentang virtual host dan alias host

Dengan Edge, host virtual menentukan alamat IP dan port, atau nama dan port DNS, di proxy API terekspos dan, juga, URL yang digunakan aplikasi untuk mengakses proxy API. Alamat IP/nama DNS sesuai dengan Router Edge, dan nomor port adalah port terbuka di {i>Router<i}.

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

Kombinasi alias host dan nomor port untuk host virtual harus unik untuk semua yang dihosting secara virtual dalam penginstalan Edge. Itu berarti beberapa host virtual dapat menggunakan nomor port yang sama jika domain tersebut memiliki alias host yang berbeda.

{i>Host<i} virtual juga menentukan apakah proxy API diakses menggunakan protokol HTTP, atau oleh protokol HTTPS terenkripsi menggunakan TLS. Saat mengonfigurasi {i>host<i} virtual untuk menggunakan HTTPS, mengaitkan host virtual dengan keystore yang berisi sertifikat dan kunci pribadi yang digunakan oleh {i>host<i} virtual selama handshake TLS.

Untuk informasi tambahan tentang host virtual, lihat:

Cara kerja SNI dengan alias host

SNI memungkinkan Anda memiliki beberapa {i>host<i} virtual yang didefinisikan pada porta yang sama, masing-masing dengan kunci dan sertifikat TLS. Edge menentukan {i>host<i} virtual, dan pasangan sertifikat/kunci yang digunakan oleh TLS, berdasarkan server_name di permintaan TLS handshake.

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

Daripada mengalami kegagalan handshake TLS, Anda bisa menentukan pasangan sertifikat/kunci default, sebagai yang akan dijelaskan di bagian selanjutnya.

Menentukan pasangan sertifikat/kunci default di Edge untuk Cloud

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

Di Edge untuk Cloud, jika Router tidak dapat mencocokkan header SNI dengan alias host atau jika klien tidak mendukung SNI, maka {i>Router<i} menggunakan sertifikat {i>default<i} yang disediakan oleh Apigee, yaitu *.apigee.net.

Menentukan pasangan sertifikat/kunci default di Edge untuk Private Cloud

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

orgName_envName_vhName

Router menggunakan sertifikat/kunci dari kombinasi orgName_envName_vhName yang akan muncul terlebih dahulu dalam urutan abjad. Misalnya, permintaan masuk pada porta 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 diurutkan berdasarkan abjad sebelum example_prod_test.

Untuk mengaktifkan host virtual default:

  1. Pada 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 ini pada semua Router yang tersisa.

Daripada menggunakan sertifikat/kunci dari {i>host<i} virtual default, Anda bisa secara eksplisit menentukan sertifikat/kunci default pada {i>Router<i}. Gunakan prosedur berikut untuk mendefinisikan default eksplisit pasangan kunci/sertifikat:

  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 ke 'apigee. pengguna:
    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 dari 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 ini pada semua Router yang tersisa.

Mendukung SNI untuk permintaan dari Edge ke backend

Edge mendukung penggunaan SNI dari Pemroses Pesan untuk menargetkan endpoint di Apigee Edge untuk dari Cloud dan untuk deployment Private Cloud. Secara default, SNI diaktifkan pada Pemroses Pesan Edge untuk Cloud dan dinonaktifkan di Private Cloud.

Menggunakan SNI ke backend di Edge untuk Private Cloud

Agar Edge untuk Private Cloud, agar kompatibel dengan backend target yang ada, Apigee menonaktifkan SNI secara default. Jika backend target Anda 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 mendukungnya. Edge secara otomatis mengekstrak nama host dari URL permintaan dan menambahkannya ke permintaan TLS handshake.

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 pada semua Pemroses Pesan yang tersisa.

Aktifkan 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 Pemroses Pesan:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. Ulangi langkah-langkah ini pada semua Pemroses Pesan yang tersisa.