Mengonfigurasi TLS untuk BaaS API

Edge for 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 di node API BaaS Portal dan API BaaS Stack.

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

Developer menggunakan browser untuk membuat permintaan ke Portal. Secara default, permintaan menggunakan perintah HTTP pada porta 9000 dari simpul Portal.

Deployment ini mencakup load balancer antara node Portal dan Stack. Di sini Portal membuat permintaan HTTP ke load balancer, lalu load balancer meneruskan permintaan ke salah satu node Stack. Ini adalah deployment yang direkomendasikan lingkungan 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, yang berjalan di browser menggunakan HTTPS untuk membuat permintaan ke node Stack melalui beban dengan load balancer Jaringan Passthrough Eksternal Regional. 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 node Stack tunggal, yang berarti tidak perlu menyertakan load balancer. Dalam konfigurasi ini, mengonfigurasi TLS pada 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. Di sana Anda dapat mengonfigurasi TLS pada load balancer, dan secara opsional di 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 porta yang digunakan, Anda harus memastikan bahwa porta terbuka pada node. Sebagai 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 API BaaS Stack. Anda kemudian mengakses BaaS API melalui HTTP dengan menggunakan alamat IP atau nama DNS dari {i>node<i} Stack dan porta 8080. Contoh:

http://stack_IP:8080

Atau, Anda dapat mengonfigurasi akses TLS ke BaaS API sehingga Anda dapat mengaksesnya di 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 bahwa {i>firewall<i} Anda mengizinkan lalu lintas melalui porta yang ditentukan.

Stack hanya dapat mendukung satu jenis permintaan (HTTP atau HTTPS) melalui satu port. Oleh karena itu, Jika Anda 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 memproses 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 selengkapnya lihat Mengonfigurasi TLS/SSL untuk Edge On Gedung.
    Catatan: Pastikan sandi untuk keystore dan kunci sama.
  2. Salin file JKS keystore ke direktori di node Stack, seperti /opt/apigee/customer/application. Direktori tersebut harus dapat diakses oleh 'apigee' .
  3. Ubah kepemilikan file JKS ke 'apigee' pengguna:
    &gt; {i>chown apigee:apigee<i} /opt/apigee/customer/application/keystore.jks

    dengan keystore.jks adalah namanya file keystore Anda.
  4. Edit properti /opt/apigee/customer/application/usergrid.properties untuk mengatur properti berikut, termasuk jalur ke file JKS dan {i>password<i} di keystore dan kunci tersebut. Jika file tersebut tidak ada, buat:
    tomcat-server_scheme=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_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # Secara default, akses TLS menggunakan port 8080.
    # Gunakan properti ini untuk menentukan port yang berbeda.
    # tomcat-server_port=8080


    Peringatan: Nilai password harus berupa teks yang jelas. Oleh karena itu, Anda harus melindungi usergrid.properties dari akses.

    Menggunakan 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.

    Menggunakan tomcat-server_ssl.protocols untuk mengatur 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.
  5. Konfigurasi node Stack:
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid konfigurasi
  6. Mulai ulang Stack BaaS:
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid mulai ulang
  7. Pastikan TLS berfungsi dengan menjalankan perintah cURL berikut pada node Stack menggunakan HTTPS:
    &gt; 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.
  8. Ulangi pada semua node Stack.
  9. Jika Anda memiliki load balancer di depan node Stack, konfigurasi load balancer untuk membuat permintaan ke node Stack melalui HTTPS. Lihat dokumentasi di load balancer Google Cloud untuk informasi selengkapnya.

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

Mengonfigurasi Portal untuk mengakses Stack melalui TLS

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

Penginstalan API BaaS biasanya dikonfigurasi ke:

  • Menggunakan load balancer antara node Portal dan Stack

    Mengonfigurasi load balancer untuk membuat permintaan ke node Stack melalui HTTPS. Lihat dokumentasi tentang load balancer Anda untuk mendapatkan informasi lebih lanjut.

    Dalam konfigurasi ini, Portal dapat mengakses load balancer melalui HTTP atau HTTPS, bergantung pada cara mengonfigurasi load balancer. Jika load balancer menggunakan TLS, gunakan prosedur di bawah untuk mengonfigurasi Portal untuk membuat permintaan ke load balancer HTTPS.
  • Meminta Portal membuat permintaan langsung ke Stack

    Konfigurasi Portal untuk mengakses Stack-over-HTTPS seperti yang dijelaskan di bawah ini.

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

  1. Konfigurasikan akses TLS di BaaS Stack seperti yang dijelaskan di atas, atau di load balancer untuk Menumpuk node seperti yang dijelaskan dalam dokumentasi untuk load balancer.
  2. Edit /opt/apigee/customer/application/portal.properties untuk mengatur properti berikut. Jika file tersebut tidak ada, buat:
    baas.portal.config.overrideUrl=https://stackIP:port

    Tentukan alamat IP atau nama DNS dan port node Stack API sebagai nilai properti ini untuk penginstalan node tunggal, atau untuk load balancer jika Anda memiliki node Stack API BaaS.
  3. Konfigurasi node Portal:
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal konfigurasi
  4. Mulai ulang Portal dengan menggunakan perintah:
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal mulai ulang
  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 permintaan berikut URL di browser Anda, dan tambahkan pengecualian keamanan untuk mengizinkan akses:
    https://stackIP:port/status

    Tentukan alamat IP atau nama DNS dan port node atau load balancer API Stack.

Mengonfigurasi TLS pada API BaaS Portal

Secara {i>default<i}, pengguna mengakses Portal dengan membuat permintaan HTTP yang tidak terenkripsi melalui porta 9000 di Server portal. Anda dapat mengonfigurasi portal untuk menggunakan HTTPS guna mengenkripsi pengiriman data ke dan dari portal.

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

http://portal_IP:9000

Atau, Anda dapat mengonfigurasi akses TLS ke Portal sehingga Anda dapat mengaksesnya di 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 Anda mengonfigurasi akses HTTPS di port 9000, Anda tidak dapat menggunakan HTTP untuk mengakses port 9000. Jika Anda mengonfigurasi Portal untuk menggunakan porta 9443 dengan HTTPS, maka Portal tidak lagi memproses porta 9.000.

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 'apigee' .
  3. Ubah kepemilikan file PEM ke 'apigee' pengguna:
    &gt; {i>chown apigee:apigee<i} /opt/apigee/customer/application/*.PEM
  4. Edit /opt/apigee/customer/application/portal.properties untuk mengatur properti berikut. Jika file tersebut tidak ada, buat:
    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.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # Secara default, akses TLS menggunakan porta 9000.
    # Gunakan properti ini untuk menentukan port yang berbeda.
    # baas.portal.listen=9000


    Gunakan baas.portal.ssl.protocols untuk mengatur 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. Konfigurasi node Portal:
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal konfigurasi
  6. Mulai ulang Portal:
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal mulai ulang
  7. Gunakan prosedur di bawah ini dalam "Mengonfigurasi node Stack BaaS API untuk TLS di Stack atau Portal" untuk memastikan bahwa node Stack memiliki URL TLS yang benar untuk Portal.

Konfigurasikan node API BaaS untuk TLS pada Stack atau Portal

Jika Anda menyertakan load balancer di depan node Stack atau Portal, atau jika Anda mengaktifkan TLS langsung di node Portal atau Tumpukan, Anda harus mengonfigurasi {i>node<i} dengan URL yang benar untuk mengakses Stack dan Portal. Misalnya, node Stack memerlukan informasi ini saat:

  • Menyertakan URL dalam respons dalam permintaan BaaS API.
  • Menambahkan tautan dalam {i>template<i} email saat mengatur ulang {i>password<i}, atau mengirim notifikasi.
  • 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 pemuatan dengan load balancer Jaringan Passthrough Eksternal Regional. Jika load balancer dikonfigurasi untuk menggunakan TLS, gunakan protokol HTTPS. Hanya Anda perlu menyertakan porta jika Anda menggunakan porta non-standar, artinya selain porta 80 untuk HTTP dan porta 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 dengan load balancer Jaringan Passthrough Eksternal Regional. Jika load balancer dikonfigurasi untuk menggunakan TLS, gunakan protokol HTTPS. Anda hanya perlu menyertakan porta jika Anda menggunakan porta non-standar, artinya sesuatu selain porta 80 untuk HTTP dan porta 443 untuk HTTPS.

Setelah mengedit usergrid.properties:

  1. Konfigurasi node Stack:
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid konfigurasi
  2. Mulai ulang Stack BaaS:
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid mulai ulang
  3. Jika Anda mengubah portal.properties, konfigurasi node Portal:??
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal konfigurasi
  4. Mulai ulang Portal BaaS:
    &gt; /opt/apigee/apigee-service/bin/apigee-service baas-portal mulai ulang