Edge for Private Cloud v. 4.17.01
TLS (Transport Layer Security, yang pendahulunya adalah SSL) adalah teknologi keamanan standar untuk memastikan pesan terenkripsi yang aman di seluruh lingkungan API Anda. Anda dapat mengonfigurasi TLS di node API BaaS Portal dan API BaaS Stack.
Gambar berikut menunjukkan diagram deployment umum untuk API BaaS dengan satu node BaaS Portal dan tiga node API BaaS Stack.
Developer menggunakan browser untuk membuat permintaan ke Portal. Secara default, permintaan menggunakan protokol HTTP di port 9000 node Portal.
Deployment ini mencakup load balancer antara node Portal dan Stack. Dalam konfigurasi ini, Portal membuat permintaan HTTP ke load balancer, lalu load balancer meneruskan permintaan ke salah satu node Stack. Ini adalah lingkungan deployment yang direkomendasikan untuk sistem produksi.
Opsi konfigurasi TLS
Saat mengonfigurasi TLS untuk API BaaS, Anda memiliki beberapa opsi:
- Mengonfigurasi TLS di Portal dan di load balancer untuk node Stack
Dalam konfigurasi ini, developer menggunakan protokol HTTPS untuk mengakses Portal, dan Portal yang berjalan di browser menggunakan HTTPS untuk membuat permintaan ke node Stack melalui load balancer. Load balancer menggunakan HTTP untuk mengakses node Stack. - Mengonfigurasi TLS di Portal, load balancer, dan node Stack
Untuk keamanan tambahan, konfigurasikan load balancer agar menggunakan TLS untuk mengakses node Stack. - Mengonfigurasi TLS di Portal dan di satu node Stack
Di lingkungan kecil, seperti di lingkungan pengujian atau pengembangan, Anda mungkin hanya memiliki satu node Stack, yang berarti tidak perlu menyertakan load balancer. Dalam konfigurasi ini, konfigurasikan TLS di node Portal dan Stack. - Mengonfigurasi TLS di load balancer untuk Portal
Salah satu opsi yang tidak ditampilkan di atas adalah menggunakan load balancer di depan node Portal. Dalam konfigurasi tersebut, Anda dapat mengonfigurasi TLS di load balancer, dan secara opsional pada koneksi antara load balancer dan Portal.
Pastikan port TLS terbuka
Prosedur di bawah ini mengonfigurasi TLS di port Portal default 9000 dan node Stack 8080. Namun, Anda dapat mengubah port ini jika diinginkan.
Apa pun port yang Anda gunakan, Anda harus memastikan port tersebut terbuka di node. Misalnya, Anda dapat menggunakan perintah berikut untuk membuka port 8443:
$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose
Mengonfigurasi TLS di Stack BaaS API
Secara default, TLS dinonaktifkan untuk Stack BaaS API. Kemudian, Anda mengakses BaaS API melalui HTTP dengan menggunakan alamat IP atau nama DNS node Stack dan port 8080. Contoh:
http://stack_IP:8080
Atau, Anda dapat mengonfigurasi akses TLS ke BaaS API sehingga dapat mengaksesnya dalam bentuk:
https://stack_IP:8080
Dalam contoh ini, Anda mengonfigurasi akses TLS untuk menggunakan port 8080. Namun, port 8080 tidak diperlukan - Anda dapat mengonfigurasi Stack untuk menggunakan port yang berbeda. Satu-satunya persyaratan adalah firewall Anda mengizinkan traffic melalui port yang ditentukan.
Stack hanya dapat mendukung satu jenis permintaan (HTTP atau HTTPS) melalui satu port. Oleh karena itu, jika mengonfigurasi akses HTTPS di port 8080, Anda tidak dapat menggunakan HTTP untuk mengakses port 8080. Jika Anda mengonfigurasi Stack untuk menggunakan port 8443 dengan HTTPS, maka Stack tidak akan lagi memprosesnya di port 8080.
Gunakan prosedur berikut untuk mengonfigurasi akses TLS ke Stack:
- Buat file JKS keystore yang berisi sertifikat TLS dan kunci pribadi Anda. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi TLS/SSL untuk Edge On-Premises.
Catatan: Pastikan sandi di keystore dan untuk kunci sama. - Salin file JKS keystore ke direktori di node Stack, seperti /opt/apigee/customer/application. Direktori harus dapat diakses oleh pengguna 'apigee'.
- Ubah kepemilikan file JKS menjadi pengguna 'apigee':
> chown apigee:apigee /opt/apigee/customer/application/keystore.jks
dengan keystore.jks adalah nama file keystore Anda. - Edit file /opt/apigee/customer/application/usergrid.properties
untuk menetapkan properti berikut, termasuk jalur ke file JKS dan sandi di
keystore dan kunci.
/opt/apigee/customer/application/keystore.jks
# Gunakan properti ini untuk menentukan port yang berbeda.
# tomcat-server_port=8080
Peringatan: Nilai password harus dalam teks biasa. Oleh karena itu, Anda harus melindungi usergrid.properties dari akses yang tidak sah.
Gunakan properti tomcat-server_keyalias untuk menentukan alias keystore. Anda menetapkan alias kunci pada saat membuat kunci. Misalnya, Anda dapat menetapkannya menggunakan opsi -alias ke perintah keytool.
Gunakan tomcat-server_ssl.protocols untuk menetapkan protokol TLS yang didukung oleh Stack. Untuk mengetahui daftar protokol yang didukung oleh Java 8, lihat http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename. - Konfigurasikan node Stack:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Mulai ulang Stack BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Pastikan TLS berfungsi dengan menjalankan perintah cURL berikut di node Stack menggunakan
HTTPS:
> curl -k https://localhost:8080/status -v
Jika TLS dikonfigurasi dengan benar, Anda akan melihat respons yang berisi informasi status.
Jika Anda mengonfigurasi akses TLS melalui port selain 8080, ubah perintah di atas untuk menggunakan port yang benar. - Ulangi pada semua node Stack.
- Jika Anda memiliki load balancer di depan node Stack, konfigurasikan load balancer untuk membuat permintaan ke node Stack melalui HTTPS. Lihat dokumentasi di load balancer Anda untuk mengetahui informasi lebih lanjut.
Jika Portal membuat permintaan langsung ke Stack, konfigurasikan Portal untuk mengakses Stack melalui HTTPS seperti yang dijelaskan di bagian berikut. - Gunakan prosedur di bawah ini di "Mengonfigurasi node Stack BaaS API untuk TLS di Stack atau Portal" untuk memastikan node Stack memiliki URL TLS yang benar saat membuat respons pengguna.
Mengonfigurasi Portal untuk mengakses Stack melalui TLS
Portal BaaS yang berjalan di fungsi browser dengan melakukan panggilan API ke BaaS Stack. Jika mengonfigurasi BaaS Stack untuk menggunakan TLS, Anda juga harus mengonfigurasi Portal untuk melakukan panggilan tersebut melalui HTTPS.
Penginstalan BaaS API biasanya dikonfigurasi untuk:
- Gunakan load balancer antara node Portal dan Stack
Konfigurasikan load balancer untuk membuat permintaan ke node Stack melalui HTTPS. Lihat dokumentasi pada load balancer Anda untuk mengetahui informasi lebih lanjut.
Dalam konfigurasi ini, Portal dapat mengakses load balancer melalui HTTP atau HTTPS, bergantung pada cara Anda mengonfigurasi load balancer. Jika load balancer menggunakan TLS, gunakan prosedur di bawah untuk mengonfigurasi Portal agar membuat permintaan ke load balancer HTTPS. - Minta Portal membuat permintaan langsung ke Stack
Konfigurasi Portal untuk mengakses Stack over HTTPS seperti yang dijelaskan di bawah.
Gunakan prosedur berikut untuk mengonfigurasi Portal BaaS API guna melakukan panggilan API melalui HTTPS:
- Konfigurasikan akses TLS di BaaS Stack seperti yang dijelaskan di atas, atau di load balancer untuk node Stack seperti yang dijelaskan dalam dokumentasi untuk load balancer Anda.
- Edit /opt/apigee/customer/application/portal.properties
untuk menetapkan properti berikut. Jika file tersebut tidak ada, buat file tersebut:
baas.portal.config.overrideUrl=https://stackIP:port
Tentukan sebagai nilai properti ini alamat IP atau nama DNS dan port node API Stack untuk penginstalan satu node, atau load balancer jika Anda memiliki load balancer di depan node API BaaS Stack. - Konfigurasikan node Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Mulai ulang Portal menggunakan perintah:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Jika Anda menggunakan sertifikat yang ditandatangani sendiri saat mengonfigurasi akses TLS ke Stack di atas, browser Anda mungkin tidak mengizinkan permintaan ke Stack dari Portal. Jika Anda melihat error di browser bahwa akses HTTPS ke Stack tidak diizinkan, minta URL berikut di browser Anda, dan tambahkan pengecualian keamanan untuk mengizinkan akses:
https://stackIP:port/status
Tentukan alamat IP atau nama DNS dan port node API Stack atau load balancer.
Mengonfigurasi TLS di Portal BaaS API
Secara default, pengguna mengakses Portal dengan membuat permintaan HTTP yang tidak dienkripsi melalui port 9000 di server Portal. Anda dapat mengonfigurasi portal untuk menggunakan HTTPS guna mengenkripsi data yang dikirim ke dan dari portal.
Secara default, Anda mengakses Portal melalui HTTP dengan menggunakan alamat IP atau nama DNS node Portal dan port 9000. Contoh:
http://portal_IP:9000
Atau, Anda dapat mengonfigurasi akses TLS ke Portal sehingga dapat mengaksesnya dalam bentuk:
https://portal_IP:9443
Dalam contoh ini, Anda mengonfigurasi akses TLS untuk menggunakan port 9443. Namun, port 9443 tidak diperlukan - Anda dapat mengonfigurasi Portal untuk menggunakan port yang berbeda.
Portal hanya dapat mendukung satu jenis permintaan (HTTP atau HTTPS) melalui satu port. Oleh karena itu, jika mengonfigurasi akses HTTPS di port 9000, Anda tidak dapat menggunakan HTTP untuk mengakses port 9000. Jika Anda mengonfigurasi Portal untuk menggunakan port 9443 dengan HTTPS, Portal tidak akan lagi memproses di port 9000.
Untuk mengonfigurasi TLS untuk Portal:
- Buat file kunci dan file sertifikat dalam format PEM.
Catatan: Pastikan tidak ada sandi/frasa sandi pada kunci atau sertifikat. - Salin file PEM ke direktori di node Portal, seperti /opt/apigee/customer/application. Direktori tersebut harus dapat diakses oleh pengguna 'apigee'.
- Ubah kepemilikan file PEM ke pengguna 'apigee':
> chown apigee:apigee /opt/apigee/customer/application/*.PEM - Edit file /opt/apigee/customer/application/portal.properties untuk menetapkan properti berikut. Jika file tersebut tidak ada, buat file tersebut:
baas.portal.ssl=on
baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
baas.
1.1.protocols SSL0TLS, menggunakan TLS.1.protocols
# Gunakan properti ini untuk menentukan port yang berbeda.
# baas.portal.listen=9000
Gunakan baas.portal.ssl.protocols untuk menetapkan protokol TLS yang didukung oleh Portal. Untuk daftar protokol yang didukung, lihat daftar nama protokol SSL yang ditentukan oleh Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols. - Konfigurasikan node Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Mulai ulang Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Gunakan prosedur di bawah dalam "Mengonfigurasi node Stack BaaS API untuk TLS di Stack atau Portal" untuk memastikan node Stack memiliki URL TLS yang benar untuk Portal.
Mengonfigurasi node API BaaS untuk TLS di Stack atau Portal
Jika Anda menyertakan load balancer di depan node Stack atau Portal, atau jika mengaktifkan TLS langsung di node Portal atau Stack, Anda harus mengonfigurasi node dengan URL yang benar untuk mengakses Stack dan Portal. Misalnya, node Stack memerlukan informasi ini saat:
- Menyertakan URL dalam respons di permintaan BaaS API.
- Menambahkan link di template email saat mereset sandi, atau mengirim notifikasi lainnya.
- Mengalihkan pengguna ke halaman Portal tertentu.
Jika Anda menggunakan load balancer di depan node Stack atau mengonfigurasi TLS di node Stack, tetapkan properti berikut di /opt/apigee/customer/application/usergrid.properties:
usergrid-deployment_usergrid.api.url.base=http://localhost:8080
Ganti http://localhost:8080 dengan URL load balancer. Jika load balancer dikonfigurasi untuk menggunakan TLS, gunakan protokol HTTPS. Anda hanya perlu menyertakan port jika menggunakan port non-standar, yang berarti selain port 80 untuk HTTP dan port 443 untuk HTTPS.
Anda juga harus menetapkan properti berikut di /opt/apigee/customer/application/portal.properties jika menggunakan load balancer di depan node Stack:
baas.portal.config.overrideUrl=http://localhost:8080
Ganti http://localhost:8080 dengan URL load balancer untuk Stack.
Jika Anda menggunakan load balancer di depan node Portal atau mengonfigurasi TLS di node Stack, tetapkan properti berikut di usergrid.properties:
usergrid-deployment_portal.url=http://localhost:9000
Ganti http://localhost:9000 dengan URL load balancer. Jika load balancer dikonfigurasi untuk menggunakan TLS, gunakan protokol HTTPS. Anda hanya perlu menyertakan port jika menggunakan port non-standar, yang berarti selain port 80 untuk HTTP dan port 443 untuk HTTPS.
Setelah mengedit usergrid.properties:
- Konfigurasi node Stack:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid Configure - Mulai ulang Stack BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Jika Anda mengubah portal.properties, konfigurasikan node Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Mulai ulang Portal BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal mulai ulang