Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Anda dapat mengonfigurasi portal untuk menggunakan TLS. Prosedur konfigurasi TLS untuk portal bergantung pada cara Anda men-deploy portal:
- Cloud: Konfigurasikan TLS dari Pantheon atau Acquia, layanan hosting berbasis cloud untuk portal.
- Apigee Edge for Private Cloud: Mengonfigurasi TLS lokal di server yang menghosting portal.
TLS dan portal
Gambar berikut menunjukkan dua tempat portal menggunakan TLS:
- Untuk komunikasi antara portal dan API pengelolaan Edge.
Portal ini tidak berfungsi sebagai sistem yang berdiri sendiri. Sebagai gantinya, banyak informasi yang digunakan oleh portal sebenarnya disimpan di Edge, tempat Edge dapat di-deploy di cloud atau secara lokal sebagai penginstalan Private Cloud. Jika perlu, portal akan membuat permintaan HTTP atau HTTPS ke API pengelolaan Edge untuk mengambil informasi atau mengirim informasi.
Saat membuat portal, salah satu langkah pertama yang harus Anda lakukan adalah menentukan URL Edge management API. Bergantung pada cara Edge management API dikonfigurasi, URL tersebut dapat menggunakan TLS. Lihat Mulai membuat portal developer untuk informasi selengkapnya. - Untuk komunikasi antara developer dan portal.
Saat Anda menggunakan portal Layanan Developer untuk men-deploy API, developer Anda akan login ke portal untuk mendaftarkan aplikasi dan menerima kunci API. Kredensial login dan kunci API adalah informasi eksklusif yang ingin Anda kirim melalui HTTPS untuk memastikan keamanannya. Jenis informasi eksklusif ini harus dikirim melalui HTTPS.
Cara Anda mengonfigurasi TLS untuk skenario ini bergantung pada cara Anda men-deploy portal: cloud atau Apigee Edge untuk Private Cloud. Bagian berikut menjelaskan kedua skenario tersebut.
Mengonfigurasi TLS antara portal dan API pengelolaan Edge
Konfigurasi Edge management API menentukan apakah komunikasi dapat menggunakan TLS atau tidak. Jika API pengelolaan Edge dikonfigurasi untuk menggunakan TLS, portal dapat menggunakan HTTPS. Jika tidak, portal akan berkomunikasi dengan Edge melalui HTTP. Oleh karena itu, sebagai developer portal, Anda hanya perlu mengetahui bagaimana Edge dikonfigurasi untuk mengatur koneksi antara portal dan Edge.
Untuk prosedur yang Anda gunakan guna mengonfigurasi koneksi ke Edge management API, lihat Mulai membuat portal developer.
Versi Edge berbasis cloud
Jika portal Anda terhubung ke Edge versi berbasis cloud, URL untuk API pengelolaan Edge sudah dikonfigurasi sebelumnya oleh Apigee untuk menggunakan TLS. Saat mengonfigurasi portal, Anda mengakses API pengelolaan Edge menggunakan URL https://api.enterprise.apigee.com/v1.
Penginstalan Edge Private Cloud
Untuk penginstalan Edge Private Cloud, URL pengelolaan Edge API tersedia dalam bentuk:
http://EdgePrivateCloudIp:8080/v1?
atau:
https://EdgePrivateCloudIp:TLSport/v1
dengan EdgePrivateCloudIp adalah alamat IP server Edge Management Server dan TLSport adalah port TLS untuk Edge management API. Misalnya, nomor port dapat berupa 8443 atau bahkan 8080 berdasarkan konfigurasi Edge.
Mengonfigurasi TLS antara developer dan portal
Cara mengonfigurasi TLS antara developer dan portal bergantung pada cara Anda men-deploy portal: cloud atau Apigee Edge untuk Private Cloud.
Portal berbasis cloud
Pantheon
Pantheon menyediakan HTTPS otomatis gratis untuk semua situs di platformnya melalui Pantheon Global CDN dan menggunakan Let's Encrypt. Lihat juga HTTPS di CDN Global Pantheon.
Acquia
Untuk mengaktifkan TLS/SSL menggunakan Acquia, lihat Mengaktifkan SSL.Edge untuk portal Private Cloud
Semua penginstalan Private Cloud dari portal yang direkomendasikan oleh Apigee mengharuskan portal berada di belakang load balancer, seperti yang ditunjukkan di bawah ini:
Oleh karena itu, untuk penginstalan lokal, Anda memiliki dua opsi untuk mengonfigurasi TLS:
- Mengonfigurasi TLS di load balancer: Konfigurasikan TLS di load balancer itu sendiri, dan bukan di portal. Oleh karena itu, prosedur yang Anda gunakan untuk mengonfigurasi TLS bergantung pada load balancer. Lihat dokumentasi di load balancer Anda untuk mengetahui informasi lebih lanjut.
- Mengonfigurasi TLS di portal itu sendiri: Jika perlu, Anda dapat mengonfigurasi TLS di server web yang menghosting portal. Secara default, Apigee menginstal server web Apache. Guna mengetahui informasi tentang cara mengonfigurasi TLS untuk Apache, lihat Mengaktifkan HTTP Secure (HTTPS) .
Anda harus mendapatkan sertifikat TLS sendiri sebelum dapat men-deploy portal ke lingkungan produksi.
Mengonfigurasi setelan TLS tambahan
Anda dapat mengedit file sites/default/settings.local.php (cloud) atau sites/default/settings.php (Private Cloud) guna melakukan perubahan konfigurasi ke TLS untuk portal.
Saat mengedit file, tambahkan instance fungsi ini_set() untuk menetapkan properti. Untuk informasi selengkapnya tentang fungsi ini, lihat: ini_set.
Anda dapat menetapkan properti berikut di file sites/default/settings.local.php (cloud) atau sites/default/settings.php (Private Cloud) :
- cookie_httponly: (Direkomendasikan) Menentukan bahwa cookie hanya dapat diakses melalui protokol HTTP. Tetapkan properti ini sebagai:
ini_set('session.cookie_httponly', true); - session.cookie_secure - (Opsional) Menentukan bahwa cookie hanya dapat dikirim melalui koneksi aman. Namun, ini berarti semua konten harus ditayangkan melalui HTTPS. Jika setelan ini diaktifkan, situs tidak akan berfungsi melalui HTTP. Tetapkan properti ini sebagai:
ini_set('session.cookie_secure', true); - gc_maslifetime dan cookie_lifetime: (Opsional) gc_lifeteime menentukan jumlah detik setelah data berpotensi untuk dihapus, dan cookie_lifetime menentukan masa aktif cookie dalam hitungan detik. Tetapkan properti ini sebagai:
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
Untuk informasi selengkapnya tentang menyiapkan TLS antara portal developer dan klien, lihat Mengaktifkan SSL untuk Komunikasi HTTPS Aman di situs dokumen Pantheon.
Mengonfigurasi TLS dengan Load Balancer
Untuk meningkatkan performa, load balancer terkadang dikonfigurasi untuk melakukan penghentian TLS. Dengan penghentian TLS, load balancer akan mendekripsi pesan yang dikirim melalui https:// dan meneruskan pesan ke server backend melalui http://. Cara ini menghemat overhead dekripsi pesan https:// sendiri oleh server backend.
Jika load balancer meneruskan pesan http yang tidak dienkripsi ke server di pusat data yang sama, masalah keamanan bukanlah masalah. Namun, jika load balancer meneruskan pesan melalui http:// ke server di luar pusat data, seperti portal developer Apigee Anda, pesan tersebut tidak akan dienkripsi, sehingga membuka celah keamanan.
Jika portal developer Anda berada di belakang load balancer yang menggunakan penghentian TLS, dan Anda ingin semua traffic disalurkan melalui https://, halaman situs harus berisi link https:// saja dan Anda harus menambahkan kode berikut ke file portal developer sites/default/settings.local.php (cloud) atau sites/default/settings.php (Private Cloud). Karena load balancer tidak secara otomatis mengubah konten halaman HTML, kode ini memastikan bahwa semua link yang diteruskan ke klien diawali dengan https://.
Untuk mengonfigurasi TLS dengan load balancer, tambahkan baris berikut ke file sites/default/settings.local.php (cloud) atau sites/default/settings.php (Private Cloud):
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Set HTTPS URL of portal $base_url = 'https://developers.myCo.com'; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_ FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_ FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); // You could optionally substitute a canonical server name for $_SERVER['HTTP_HOST'] here. header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
Untuk informasi selengkapnya, lihat:
- Menggunakan load balancer atau reverse proxy
- Mendukung header HTTP X-Forwarded-* alternatif
- Drupal di balik reverse proxy SSL offload -- apakah konfigurasi ini benar?
Mengalihkan traffic portal ke HTTPS
Anda dapat mengalihkan semua traffic portal ke HTTPS dengan memperbarui file sites/default/settings.local.php (cloud) atau sites/default/settings.php (Private Cloud). Pembaruan yang diperlukan bervariasi, bergantung pada apakah Anda mengalihkan ke HTTPS pada nama host yang sama atau beberapa nama host.
Mengalihkan ke HTTPS pada nama host yang sama
Tambahkan kode berikut ke file sites/default/settings.local.php (cloud) atau sites/default/settings.php (Private Cloud) untuk mengalihkan ke semua traffic portal ke HTTPS pada nama host yang sama (misalnya, *.devportal.apigee.io).
Dalam skenario ini, jika developer mengunjungi portal Anda di live-example.devportal.apigee.io, tetapi perlu mengakses sertifikat yang diupload untuk devportal.example.com, permintaan akan gagal.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
Mengalihkan ke HTTPS di beberapa nama host
Tambahkan kode berikut ke file sites/default/settings.local.php (cloud) atau file sites/default/settings.php (Private Cloud) untuk mengalihkan ke semua traffic portal ke HTTPS di beberapa nama host.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Assume we are not forcing a redirect until proven otherwise. $force_redirect = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { // We will force a redirect because HTTPS is required. $force_redirect = TRUE; } // This works on Pantheon only; the constant is undefined elsewhere. switch (PANTHEON_ENVIRONMENT) { case 'dev': $canonical_hostname = 'dev.devportal.example.com'; break; case 'test': $canonical_hostname = 'test.devportal.example.com'; break; case 'live': $canonical_hostname = 'devportal.example.com'; break; default: $canonical_hostname = strtolower($_SERVER['HTTP_HOST']); break; } if ($canonical_hostname != strtolower($_SERVER['HTTP_HOST'])) { // We will force a redirect because hostname is not canonical. $force_redirect = TRUE; } if ($force_redirect) { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $canonical_hostname . $_SERVER['REQUEST_URI']); exit; } }