Mengonfigurasi TLS untuk BaaS API

Edge untuk Private Cloud v4.18.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 pada API BaaS Portal dan node BaaS Stack API.

Gambar berikut menunjukkan diagram deployment standar untuk API BaaS dengan satu node BaaS Portal dan tiga node BaaS Stack API.

Developer menggunakan browser untuk membuat permintaan ke Portal. Secara default, permintaan menggunakan protokol HTTP pada port 9000 node Portal.

Deployment ini mencakup load balancer antara Node Portal dan Stack. Dalam konfigurasi ini, Portal membuat permintaan HTTP ke load balancer, dan load balancer kemudian meneruskan permintaan tersebut 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 pada Portal, load balancer, dan Node stack

    Untuk keamanan tambahan, konfigurasikan load balancer agar menggunakan TLS untuk mengakses node Stack.
  • Konfigurasi TLS di Portal dan pada 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 pada node Portal dan Stack.
  • Mengonfigurasi TLS pada 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 pada port Portal default 9000 dan node Stack 8080. Namun, Anda dapat mengubah port ini jika diinginkan.

Terlepas dari port yang digunakan, Anda harus memastikan bahwa port terbuka pada 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 pada API BaaS Stack

Secara default, TLS dinonaktifkan untuk API BaaS Stack. Kemudian, Anda dapat mengakses BaaS API melalui HTTP 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 agar Anda 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, Stack tidak akan lagi memantau port 8080.

Gunakan prosedur berikut untuk mengonfigurasi akses TLS ke Stack:

  1. Buat file JKS keystore yang berisi sertifikasi TLS dan kunci pribadi Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi TLS/SSL untuk Edge On Premises.
    Catatan: Pastikan sandi di keystore dan untuk kunci sama.
  2. Salin file JKS keystore ke direktori di node Stack, seperti /opt/apigee/customer/application. Direktori tersebut harus dapat diakses oleh pengguna 'apigee'.
  3. Ubah kepemilikan file JKS ke pengguna 'apigee':
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    dengan keystore.jks adalah nama file keystore Anda.
  4. Edit file /opt/apigee/customer/application/usergrid.properties untuk menetapkan properti berikut, termasuk jalur ke file JKS dan sandi pada keystore dan kunci. Jika file tersebut tidak ada, buat file tersebut:
    tomcat-server_skema=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true



    # Gunakan properti ini untuk menentukan port yang berbeda.
    # tomcat-server_port=8080


    Peringatan: Nilai sandi harus berupa teks yang jelas. 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 menyetelnya menggunakan opsi -alias ke perintah keytool.

    Gunakan tomcat-server_ssl.protocols untuk menyetel protokol TLS yang didukung oleh Stack. Untuk daftar protokol yang didukung oleh Java 8, lihat http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename.
  5. Konfigurasikan node Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. Mulai ulang BaaS Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. Pastikan TLS berfungsi dengan menjalankan perintah cURL berikut pada 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 agar menggunakan port yang benar.
  8. Ulangi pada semua node Stack.
  9. Jika Anda memiliki load balancer di depan Node Stack, konfigurasikan load balancer untuk membuat permintaan ke node Stack melalui HTTPS. Lihat dokumentasi tentang load balancer Anda untuk mengetahui informasi selengkapnya.

    Jika Portal membuat permintaan langsung ke Stack, konfigurasikan Portal untuk mengakses Tumpukan melalui HTTPS seperti yang dijelaskan di bagian berikut.
  10. Gunakan prosedur di bawah dalam "Mengonfigurasi node Stack BaaS API untuk TLS di Stack atau Portal" untuk memastikan bahwa node Stack memiliki URL TLS yang benar saat membuat respons pengguna.

Mengonfigurasi Portal untuk mengakses Stack melalui TLS

Portal BaaS yang berjalan di browser berfungsi dengan melakukan panggilan API ke BaaS Stack. Jika Anda mengonfigurasi BaaS Stack untuk menggunakan TLS, Anda juga harus mengonfigurasi Portal untuk melakukan panggilan tersebut melalui HTTPS.

Penginstalan BaaS API biasanya dikonfigurasi ke:

  • Menggunakan load balancer antara Node Portal dan Stack

    Konfigurasikan load balancer untuk membuat permintaan ke node Stack melalui HTTPS. Lihat dokumentasi tentang load balancer Anda untuk mengetahui informasi selengkapnya.

    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 guna membuat permintaan ke load balancer HTTPS.
  • Meminta Portal untuk membuat permintaan langsung ke Stack

    Konfigurasi Portal untuk mengakses Tumpukan melalui HTTPS seperti yang dijelaskan di bawah.

Gunakan prosedur berikut untuk mengonfigurasi Portal BaaS API untuk melakukan panggilan API melalui HTTPS:

  1. Konfigurasikan akses TLS pada Stack BaaS seperti yang dijelaskan di atas, atau pada load balancer untuk node Stack seperti yang dijelaskan dalam dokumentasi untuk load balancer.
  2. 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

    Tetapkan alamat IP atau nama DNS dan port node Stack API untuk penginstalan node tunggal, atau load balancer jika Anda memiliki load balancer di depan node Stack BaaS API.
  3. Konfigurasikan node Portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal Configure
  4. Mulai ulang Portal dengan menggunakan perintah:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. 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 Stack API atau load balancer.

Mengonfigurasi TLS pada 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 agar menggunakan HTTPS untuk mengenkripsi data yang dikirim ke dan dari portal.

Secara default, Anda mengakses Portal melalui HTTP menggunakan alamat IP atau nama DNS node Portal dan port 9000. Contoh:

http://portal_IP:9000

Atau, Anda dapat mengonfigurasi akses TLS ke Portal agar Anda dapat mengaksesnya dalam format:

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 pada port 9000, Anda tidak dapat menggunakan HTTP untuk mengakses port 9000. Jika Anda mengonfigurasi Portal untuk menggunakan port 9443 dengan HTTPS, maka Portal tidak akan lagi memantau port 9000.

Untuk mengonfigurasi TLS untuk Portal:

  1. Buat file kunci dan file sertifikat dalam format PEM.
    Catatan: Pastikan tidak ada sandi/frasa sandi pada kunci atau sertifikat.
  2. Salin file PEM ke direktori di node Portal, seperti /opt/apigee/customer/application. Direktori tersebut harus dapat diakses oleh pengguna 'apigee'.
  3. Ubah kepemilikan file PEM ke pengguna 'apigee':
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. 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.portal.1.protocols.TLS0 TLS1

    # Gunakan properti ini untuk menentukan port yang berbeda.
    # baas.portal.listen=9000


    Gunakan baas.portal.ssl.protocols untuk menyetel protokol TLS yang didukung oleh Portal. Untuk mengetahui 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.
  5. Konfigurasikan node Portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal Configure
  6. Mulai ulang Portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal mulai ulang
  7. Gunakan prosedur di bawah dalam "Mengonfigurasi node Stack BaaS API untuk TLS di Stack atau Portal" untuk memastikan bahwa node Stack memiliki URL TLS yang benar untuk Portal.

Mengonfigurasi node BaaS API 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 agar dapat mengakses Stack dan Portal. Misalnya, node Stack memerlukan informasi ini saat:

  • Menyertakan URL dalam respons di permintaan BaaS API.
  • Menambahkan link dalam 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 pada 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, artinya sesuatu selain port 80 untuk HTTP dan port 443 untuk HTTPS.

Anda juga harus menetapkan properti berikut di /opt/apigee/customer/application/portal.properties jika Anda 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 pada 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, artinya selain port 80 untuk HTTP dan port 443 untuk HTTPS.

Setelah mengedit usergrid.properties:

  1. Konfigurasikan node Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. Mulai ulang BaaS Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. Jika Anda mengubah portal.properties, konfigurasi node Portal:??
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal Configure
  4. Mulai ulang Portal BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal mulai ulang