Mengonfigurasi TLS dari Edge ke backend (Cloud dan Private Cloud)

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

Proxy API berfungsi sebagai pemetaan endpoint yang tersedia secara publik ke layanan backend Anda. Host virtual menentukan cara proxy API yang ditampilkan ke publik terekspos ke aplikasi. Sebagai misalnya, {i>host<i} virtual menentukan apakah proxy API dapat diakses menggunakan TLS. Jika Anda mengkonfigurasi proxy API, mengedit definisi ProxyEndpoint-nya untuk pengguna.

TargetEndpoint adalah setara dengan ProxyEndpoint keluar. Fungsi TargetEndpoint sebagai klien HTTP dari Edge ke layanan backend. Saat membuat proxy API, Anda dapat mengonfigurasi untuk menggunakan nol atau beberapa TargetEndpoints.

Pelajari lebih lanjut:

Mengonfigurasi TargetEndpoint atau TargetServer

Untuk mengonfigurasi TargetEndpoint, edit objek XML yang menentukan TargetEndpoint. Anda dapat edit TargetEndpoint dengan mengedit file XML yang menetapkan TargetEndpoint di Proxy API, atau edit di UI pengelolaan Edge.

Untuk menggunakan UI pengelolaan Edge guna mengedit TargetEndpoint:

  1. Login ke UI pengelolaan Edge di https://enterprise.apigee.com.
  2. Pilih nama proxy API yang akan diperbarui.
  3. Pilih tab Develop.
  4. Di bagian Endpoint Target, pilih default.
  5. Di area kode, definisi TargetEndpoint muncul, mirip dengan di bawah ini:
    <TargetEndpoint name="default">
      <Description/>
      <FaultRules/>
      <Flows/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <HTTPTargetConnection>
        <Properties/>
        <SSLInfo>
          <Enabled>true</Enabled>
          <TrustStore>ref://myTrustStoreRef</TrustStore>
        </SSLInfo>
        <URL>https://mocktarget.apigee.net</URL>
      </HTTPTargetConnection>
    </TargetEndpoint>
  6. Mengonfigurasi truststore seperti yang dijelaskan di bawah di Tentang konfigurasi TLS dengan backend.
  7. Lakukan perubahan dan simpan proxy. Jika proxy API telah di-deploy, simpan proxy men-deploy ulang aplikasi tersebut dengan setelan baru.

Perhatikan bahwa definisi TargetEndpoint berisi properti name. Anda menggunakan nilai properti name untuk mengonfigurasi definisi ProxyEndpoint dari proxy API untuk menggunakan TargetEndpoint. Lihat referensi konfigurasi proxy API untuk mengetahui informasi selengkapnya.

TargetEndpoint dapat dikonfigurasi untuk mereferensikan TargetServer, bukan URL target. Konfigurasi TargetServer memisahkan URL endpoint konkret dari Konfigurasi TargetEndpoint. TargetServer digunakan untuk mendukung load balancing dan failover di beberapa instance server backend.

Di bawah ini adalah contoh definisi TargetServer:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer> 

TargetServer direferensikan oleh nama dalam <HTTPTargetConnection> di definisi TargetEndpoint. Anda dapat mengonfigurasi satu atau beberapa TargetServers yang bernama, seperti yang ditunjukkan di bawah ini.

<TargetEndpoint name="default">
  ...
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
  ...
</TargetEndpoint>

Lihat Load balancing di seluruh server backend.

Tentang konfigurasi TLS dengan backend

Sebelum mengkonfigurasi akses TLS ke backend, Anda harus memahami dua hal penting poin:

  1. Secara default, Edge tidak memvalidasi sertifikat backend. Anda harus membuat truststore untuk mengonfigurasi Edge untuk memvalidasi sertifikat.
  2. Menggunakan referensi untuk menentukan keystore atau truststore yang digunakan oleh Edge.

Kedua pertimbangan tersebut dijelaskan di bawah.

Menentukan truststore untuk mengaktifkan validasi sertifikat

Saat membuat permintaan TLS melalui TargetEndpoint atau TargetServer, Edge tidak secara {i>default<i} memvalidasi sertifikat TLS yang diterima dari server backend. Artinya, Edge tidak memvalidasi bahwa:

  • Sertifikat telah ditandatangani oleh CA tepercaya.
  • Sertifikat belum habis masa berlakunya.
  • Sertifikat memberikan nama umum. Jika terdapat nama yang sama, Edge tidak memvalidasi bahwa nama umum cocok dengan nama {i>host<i} yang ditentukan di URL.

Untuk mengonfigurasi Edge guna memvalidasi sertifikat backend, Anda harus:

  1. Membuat truststore di Edge.
  2. Upload sertifikat server atau rantai sertifikat ke truststore. Jika sertifikat server ditandatangani oleh pihak ketiga, maka Anda harus mengunggah rantai sertifikat lengkap, termasuk sertifikat CA {i>root<i}, ke truststore. Tidak ada CA yang dipercaya secara implisit.
  3. Tambahkan truststore ke definisi TargetEndpoint atau TargetServer.

Lihat Keystore dan Truststore untuk mengetahui informasi selengkapnya.

Contoh:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Menggunakan referensi ke keystore atau truststore

Contoh di bawah ini menampilkan cara mengonfigurasi TargetEndpoint atau TargetServer untuk mendukung TLS. Sebagai bagian dari konfigurasi TLS, Anda menentukan truststore dan keystore sebagai bagian dari Definisi TargetEndpoint atau TargetServer.

Apigee sangat merekomendasikan agar Anda menggunakan referensi ke keystore dan truststore dalam definisi TargetEndpoints atau TargetServer. Keuntungan menggunakan referensi adalah Anda hanya perlu memperbarui referensi agar mengarah ke keystore atau truststore yang berbeda untuk memperbarui sertifikat TLS.

Rujukan ke keystore dan truststore di definisi TargetEndpoint atau TargetServer berfungsi dengan cara yang sama untuk host virtual.

Mengonversi TargetEndpoint atau TargetServer untuk menggunakan referensi

Anda mungkin memiliki definisi TargetEndpoint atau TargetServer yang menggunakan nama literal keystore dan truststore. Untuk mengonversi TargetEndpoint atau TargetServer untuk menggunakan referensi:

  1. Mengupdate definisi TargetEndpoint atau TargetServer untuk menggunakan referensi.
  2. Mulai Ulang Prosesor Pesan Edge:
    • Untuk pelanggan Cloud Publik, hubungi Dukungan Apigee Edge untuk memulai ulang Pemroses Pesan.
    • Pelanggan Untuk Private Cloud, mulai ulang Pemroses Pesan Edge satu pada satu waktu.
  3. Pastikan TargetEndpoint atau TargetServer Anda berfungsi dengan benar.

Mengonfigurasi TLS satu arah ke backend server

Saat menggunakan definisi TargetEndpoint, mengonfigurasi akses TLS satu arah dari Edge (klien TLS) ke server backend (server TLS) tidak memerlukan konfigurasi tambahan apa pun di Edge. Penting ke server backend untuk mengonfigurasi TLS dengan benar.

Anda hanya perlu memastikan bahwa elemen <URL> di Definisi TargetEndpoint merujuk pada layanan backend berdasarkan protokol HTTPS dan Anda aktifkan TLS:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Jika Anda menggunakan TargetServer untuk menentukan layanan backend, aktifkan TLS dalam definisi TargetServer:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
  </SSLInfo> 
</TargetServer> 

Namun, jika Anda ingin Edge memvalidasi sertifikat backend, Anda harus membuat truststore yang berisi sertifikat backend atau rantai sertifikat. Kemudian, Anda menentukan truststore di definisi TargetEndpoint:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

Atau dalam definisi TargetServer:

<TargetServer name="target1">
  <Host>mockserver.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
    <TrustStore>ref://myTrustStoreRef</TrustStore>
  </SSLInfo> 
</TargetServer>

Untuk mengonfigurasi TLS satu arah:

  1. Jika Anda ingin memvalidasi sertifikat backend, buat truststore di Edge, lalu upload sertifikat backend atau rantai CA, seperti yang dijelaskan dalam Keystore dan Truststore. Untuk contoh ini, jika Anda harus membuat truststore, beri nama myTrustStore Anda.
  2. Jika Anda membuat truststore, gunakan panggilan POST API berikut untuk membuat referensi bernama myTrustStoreRef ke truststore yang Anda buat di atas:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>' -u email:password
    
  3. Gunakan UI pengelolaan Edge untuk memperbarui definisi TargetEndpoint untuk proxy API (atau, jika Anda menentukan proxy API dalam XML, edit file XML untuk proxy):
    1. Login ke UI pengelolaan Edge di https://enterprise.apigee.com.
    2. Di menu UI pengelolaan Edge, pilih API.
    3. Pilih nama proxy API yang akan diperbarui.
    4. Pilih tab Development.
    5. Di bagian Endpoint Target, pilih default.
    6. Di area kode, edit elemen <HTTPTargetConnection> untuk tambahkan elemen <SSLInfo>. Pastikan untuk menentukan referensi truststore yang benar dan tetapkan <Enabled> ke true:
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. Simpan proxy API. Jika proxy API telah di-deploy, proxy API tersebut akan di-deploy ulang dengan setelan baru.

Mengonfigurasi TLS dua arah ke backend server

Jika Anda ingin mendukung TLS dua arah antara Edge (klien TLS) dan server backend (TLS) server):

  • Buat keystore di Edge dan upload sertifikat Edge dan kunci pribadi.
  • Jika Anda ingin memvalidasi sertifikat backend, buat truststore di Edge yang berisi dan rantai CA yang Anda terima dari server backend.
  • Mengupdate TargetEndpoint untuk proxy API apa pun yang mereferensikan server backend untuk dikonfigurasi TLS.

Menggunakan alias kunci untuk menentukan sertifikat keystore

Anda dapat menentukan beberapa sertifikat, masing-masing dengan aliasnya sendiri, di keystore yang sama. Secara default, Edge menggunakan sertifikat pertama yang ditentukan di keystore.

Secara opsional, Anda dapat mengonfigurasi Edge agar menggunakan sertifikat yang ditentukan oleh properti <KeyAlias>. Cara ini memungkinkan Anda menentukan satu keystore untuk beberapa sertifikat, lalu pilih yang ingin Anda gunakan dalam definisi TargetServer. Jika Edge tidak dapat menemukan sertifikat dengan alias yang cocok dengan <KeyAlias>, maka tindakan default akan digunakan sertifikat pertama di keystore.

Edge untuk pengguna Public Cloud harus menghubungi Dukungan Apigee Edge untuk mengaktifkan fitur ini.

Mengonfigurasi TLS dua arah

Untuk mengonfigurasi TLS dua arah:

  1. Buat keystore di Edge, lalu upload sertifikat dan kunci pribadi, sesuai prosedur dijelaskan di sini: Keystore dan Truststore. Untuk contoh ini, buat keystore bernama myTestKeystore yang menggunakan nama alias myKey untuk sertifikat dan kunci pribadi.
  2. Gunakan panggilan POST API berikut untuk membuat referensi bernama myKeyStoreRef ke keystore yang Anda buat di atas:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myKeyStoreRef">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    

    Referensi menentukan nama keystore dan jenis referensi sebagai KeyStore.

    Gunakan panggilan GET API berikut untuk melihat referensi:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. Jika Anda ingin memvalidasi sertifikat backend, buat truststore di Edge, lalu upload sertifikat dan CA jaringan bisnis, seperti yang dijelaskan di sini: Keystores dan Truststore. Untuk contoh ini, jika Anda harus membuat truststore, beri nama myTrustStore.
  4. Jika Anda membuat truststore, gunakan panggilan POST API berikut untuk membuat referensi bernama myTrustStoreRef ke truststore yang Anda buat di atas:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    
  5. Gunakan UI pengelolaan Edge untuk memperbarui definisi TargetEndpoint untuk proxy API (atau, jika Anda menentukan proxy API dalam XML, edit file XML untuk proxy):
    1. Login ke UI pengelolaan Edge di https://enterprise.apigee.com.
    2. Di menu UI pengelolaan Edge, pilih API.
    3. Pilih nama proxy API yang akan diperbarui.
    4. Pilih tab Development.
    5. Di bagian Endpoint Target, pilih default.
    6. Di area kode, edit elemen <HTTPTargetConnection> untuk tambahkan <SSLInfo> . Pastikan untuk menentukan keystore dan alias kunci yang benar dan setel keduanya Elemen <Enabled> dan <ClientAuthEnabled> ke benar (true):
      <TargetEndpoint name="default">
        ...
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>true</ClientAuthEnabled>
            <KeyStore>ref://myKeyStoreRef</KeyStore>
            <KeyAlias>myKey</KeyAlias>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        ...
      </TargetEndpoint>
    7. Simpan proxy API. Jika proxy API telah di-deploy, proxy API tersebut akan di-deploy ulang dengan setelan baru.

Untuk informasi selengkapnya tentang opsi yang tersedia di <TargetEndpoint>, termasuk cara menggunakan variabel untuk memberikan nilai <SSLInfo> TargetEndpoint, lihat Referensi konfigurasi proxy API.

Mengaktifkan SNI

Edge mendukung penggunaan Indikasi Nama Server (SNI) dari Pemroses Pesan ke target endpoint di Apigee Edge untuk Cloud dan untuk deployment 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. Lihat Menggunakan SNI dengan Edge untuk informasi lebih lanjut.