Menggunakan SNI dengan Edge

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

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

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

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 dan port IP, atau nama dan port DNS, tempat proxy API diekspos dan, dengan demikian, URL yang digunakan aplikasi untuk mengakses proxy API. Alamat IP/nama DNS sesuai dengan Edge Router, dan nomor port-nya adalah port terbuka di Router.

Saat membuat host virtual, Anda juga menetapkan 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 membandingkan header Host dari permintaan 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 handshake TLS.

Untuk informasi tambahan tentang host virtual, lihat:

Cara kerja SNI dengan alias host

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

Router Edge membaca ekstensi server_name dalam permintaan handshake TLS, 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 gagalnya handshake TLS, Anda dapat menentukan pasangan sertifikat/kunci default, seperti yang dijelaskan di bagian berikutnya.

Menentukan pasangan sertifikat/kunci default di Edge untuk Cloud

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

Di Edge untuk 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 sertifikat/kunci default di Edge untuk Private Cloud

Di Edge untuk Private Cloud, jika tidak ditemukan 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 pada 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 pada port 443, dan ada dua host virtual yang ditentukan untuk organisasi 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 muncul menurut 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, buatlah 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 pada semua {i>Router<i} yang tersisa.

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

  1. Pada node Router pertama, salin sertifikat dan kunci pribadi ke lokasi pada node Router yang dapat diakses oleh pengguna apigee. Misalnya, /opt/apigee/customer/application.
  2. Ubah kepemilikan file ke '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, buatlah 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 pada semua {i>Router<i} yang tersisa.

Mendukung SNI untuk permintaan dari Edge ke backend

Edge mendukung penggunaan SNI dari Message Processors untuk menargetkan endpoint di Apigee Edge untuk Cloud dan deployment 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

Agar Edge untuk Private Cloud memiliki kompatibilitas mundur 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 ada konfigurasi khusus Edge lainnya yang diperlukan. Jika lingkungan target Anda dikonfigurasi untuk SNI, Edge akan mendukungnya. Edge otomatis mengekstrak nama host dari URL permintaan dan menambahkannya ke permintaan handshake TLS.

Aktifkan 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 ini pada semua Pemroses Pesan lainnya.

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, buatlah 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 ini pada semua Pemroses Pesan lainnya.