Mengakses informasi koneksi TLS di 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 satu arah, klien mengeluarkan permintaan sesi ke {i>host<i} virtual yang di-deploy di {i>Router<i} Edge dan {i>Router<i} merespons dengan sertifikat yang berisi kunci publik {i>host<i} virtual. Untuk sertifikat yang ditandatangani, klien dapat mengajukan permintaan ke {i>Certificate Authority<i} (CA) untuk mengotentikasi sertifikat.

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

  • Router Edge menyajikan 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.

Mengambil informasi koneksi TLS

Selama permintaan ke proxy API melalui {i>host<i} virtual yang mendukung TLS, Edge dapat menangkap informasi tentang koneksi TLS. Proxy API Anda kemudian dapat mengakses informasi tersebut melalui variabel {i>flow<i} untuk melakukan analisis dan validasi tambahan.

Jenis informasi TLS yang ditangkap oleh Edge bergantung pada apakah {i>host<i} virtual mendukung TLS satu arah atau dua arah. Misalnya, untuk TLS satu arah, Edge dapat mengambil informasi tentang Penyandian TLS atau protokol TLS yang digunakan dalam koneksi TLS.

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

Merekam informasi untuk keduanya TLS satu arah dan dua arah

Tabel berikut mencantumkan variabel alur yang berisi informasi koneksi TLS yang diambil oleh Edge dan tersedia untuk diakses di proxy API. Informasi ini ditangkap untuk kedua kalinya dan TLS dua arah dengan menyetel <ConnectionProperties> ke true definisi {i>host<i} virtual:

Variabel flow Deskripsi
tls.cipher Penyandian 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 alur ini tersedia saat Anda menetapkan <ConnectionProperties> atau <ClientProperties> atau ke true.

Merekam informasi TLS tambahan selama TLS dua arah

Tabel berikut mencantumkan variabel alur yang berisi detail sertifikat klien yang diambil oleh Edge di TLS dua arah. Informasi ini ditangkap untuk TLS dua arah dengan mengatur <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 Nama yang Dibedakan (DN) penerbit 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 alur ini tersedia saat Anda menetapkan <ConnectionProperties> atau <ClientProperties> ke benar (true).

Mengonfigurasi host virtual untuk menangkap informasi TLS

Untuk mengonfigurasi host virtual guna mengambil informasi TLS, setel properti berikut di bawah <PropagateTLSInformation> hingga true.

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

Misalnya, definisi {i>host<i} virtual berikut menggunakan TLS dua arah dan memungkinkan perekaman 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

Saat Anda mengaktifkan pengambilan informasi TLS pada host virtual, Edge akan meneruskan informasi tersebut menggunakan header HTTP. Oleh karena itu, Anda harus memastikan batas ukuran header ditetapkan dengan benar berdasarkan apakah Anda menggunakan Edge untuk Cloud atau Edge untuk Private Cloud:

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

Mengakses variabel alur di proxy API

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

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

Untuk informasi selengkapnya, lihat: