Mengakses informasi koneksi TLS dalam proxy API

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

Edge memungkinkan Anda membuat host virtual yang mendukung TLS satu arah dan dua arah. Dengan TLS, klien mengeluarkan permintaan sesi ke host virtual yang di-deploy di Router Edge dan Router akan merespons dengan sertifikat yang berisi kunci publik host virtual. Untuk sertifikat yang ditandatangani, klien dapat mengajukan permintaan ke Certificate Authority (CA) untuk mengautentikasi sertifikat tersebut.

Di TLS dua arah, sertifikat lulus klien dan Edge yang divalidasi sebagai bagian dari permintaan:

  • Router Edge memberikan sertifikatnya ke klien TLS untuk mengautentikasi dirinya sendiri. Klien kemudian memverifikasi identitas server sebelum mengirim sertifikatnya ke server.
  • Klien TLS menyajikan sertifikatnya ke Edge untuk mengautentikasi dirinya sendiri.

Lihat Tentang host virtual untuk informasi selengkapnya.

Menangkap informasi koneksi TLS

Selama permintaan ke proxy API melalui host virtual yang mendukung TLS, Edge dapat mengambil informasi tentang koneksi TLS. Proxy API Anda kemudian dapat mengakses informasi tersebut melalui variabel alur untuk melakukan analisis dan validasi tambahan.

Jenis informasi TLS yang diambil oleh Edge bergantung pada apakah host virtual mendukung TLS satu arah atau dua arah. Misalnya, untuk TLS satu arah, Edge dapat mengambil informasi tentang cipher TLS atau protokol TLS yang digunakan dalam koneksi TLS.

Untuk TLS dua arah, Edge dapat menangkap semua informasi yang sama seperti yang diambil untuk TLS satu arah, dan juga mengambil informasi tentang sertifikat klien. Misalnya, Edge dapat mengambil sidik jari SHA1 dari sertifikat klien dan sertifikat klien dalam format PEM.

Merekam informasi untuk TLS satu arah dan dua arah

Tabel berikut mencantumkan variabel alur yang berisi informasi koneksi TLS yang direkam oleh Edge dan tersedia untuk diakses di proxy API. Informasi ini dicatat untuk TLS satu arah dan dua arah dengan menetapkan <ConnectionProperties> ke benar (true) dalam definisi host virtual:

Variabel flow Deskripsi
tls.cipher Cipher yang digunakan oleh koneksi TLS.
tls.protocol Protokol yang digunakan oleh koneksi TLS.
tls.server.name Nama server SNI yang diminta.
tls.session.id

ID sesi.

Variabel flow ini tersedia saat Anda menetapkan <ConnectionProperties> atau <ClientProperties> atau ke true.

Menangkap informasi TLS tambahan selama TLS dua arah

Tabel berikut mencantumkan variabel alur yang berisi detail sertifikat klien yang diambil oleh Edge dalam TLS dua arah. Informasi ini diambil untuk TLS dua arah dengan menetapkan <ClientProperties> ke benar (true) dalam definisi host virtual:

Variabel flow Deskripsi
tls.client.s.dn Nama yang Dibedakan (DN) subjek dari sertifikat klien.
tls.client.i.dn Penerbit Nama yang Dibedakan (DN) dari sertifikat klien.
tls.client.raw.cert Sertifikat klien dalam format PEM.
tls.client.cert.serial Nomor seri sertifikat klien.
tls.client.cert.fingerprint Sidik jari SHA1 sertifikat klien.
tls.session.id

ID sesi.

Variabel flow ini tersedia saat Anda menetapkan <ConnectionProperties> atau <ClientProperties> ke benar (true).

Mengonfigurasi {i>host<i} virtual untuk menangkap informasi TLS

Untuk mengonfigurasi host virtual agar dapat mengambil informasi TLS, tetapkan properti berikut di bagian <PropagateTLSInformation> ke true.

  • <ConnectionProperties>: Mengaktifkan pengambilan informasi koneksi TLS untuk TLS satu arah dan dua arah. Nilai defaultnya adalah false.
  • <ClientProperties>: Mengaktifkan pengambilan informasi tambahan untuk TLS dua arah. Nilai defaultnya adalah false.

Misalnya, definisi host virtual berikut menggunakan TLS dua arah dan memungkinkan pengambilan kedua jenis informasi TLS:

<VirtualHost name="secure">
    ....
    <SSLInfo>
        <Enabled>true</Enabled>
        # Enable two-way TLS.
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>ks-alias</KeyAlias>
        <KeyStore>ref://ks-ref</KeyStore>
        <TrustStore>ref://ts-ref</TrustStore>
    </SSLInfo>
    <PropagateTLSInformation>
        <ConnectionProperties>true</ConnectionProperties>
        <ClientProperties>true</ClientProperties>
    </PropagateTLSInformation>
</VirtualHost>

Jika Anda meneruskan isi JSON, tetapkan properti sebagai:

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

Menetapkan batas ukuran header

Jika Anda mengaktifkan perekaman informasi TLS di host virtual, Edge akan meneruskan informasi tersebut menggunakan header HTTP. Oleh karena itu, Anda harus memastikan bahwa batas ukuran header ditetapkan dengan tepat berdasarkan apakah Anda menggunakan Edge untuk Cloud atau Edge untuk Private Cloud:

  • Edge untuk Cloud: Apigee menetapkan ukuran header dengan tepat.
  • Edge untuk Private Cloud: Fitur tidak tersedia.

Mengakses variabel flow di proxy API

Dari dalam proxy API, Anda dapat mengakses dan memeriksa variabel alur TLS. Misalnya, Anda dapat menggunakan kebijakan AssignMessage untuk mengaksesnya dan mengaksesnya di JavaScript dengan kebijakan JavaScript.

Anda juga dapat mereferensikan variabel flow dalam elemen <Condition> dari proxy atau alur target, atau dalam <Step> atau <RouteRule>. Misalnya, Anda dapat mengarahkan permintaan ke target yang berbeda berdasarkan SN klien.

Untuk mengetahui informasi selengkapnya, lihat: