Saya ingin membuat rute internal yang aman antara dua aplikasi dalam ruang/organisasi yang sama. Seharusnya tidak pernah mungkin untuk mencapai aplikasi Node.js dari luar. Aplikasi Java saya terhubung melalui HTTP ke aplikasi Node (berjalan dengan express).

Saya sekarang telah mencoba mengatur konfigurasi yang diinginkan dengan membuat rute yang disebut example-route.apps.internal dan menetapkannya ke aplikasi Node. Sebagai langkah selanjutnya, saya sudah membuka port (saya sudah mencoba 443, 80, 8080) di konfigurasi jaringan aplikasi Java (dengan tujuan aplikasi Node ). Saya me-restart kedua aplikasi.

Kemudian, saya membuka koneksi Java ke tautan http://example-route.apps.internal/test123. Saya juga mencoba menggunakan https. Hasilnya sama. Java menolak untuk terhubung ke URL ini.

Sekarang, pertanyaan-pertanyaan berikut:

  • Bagaimana cara mengatur komunikasi ini dengan benar? Haruskah saya menyelesaikan DNS internal ini? Port mana yang benar jika saya hanya menggunakan port variabel env? Bagaimana saya harus membaca port ini dari aplikasi lain?
  • Seberapa aman komunikasi, jika HTTP digunakan sebagai pengganti HTTPS? (Saya berasumsi HTTPS tidak memungkinkan secara internal). Apakah seaman koneksi HTTPS dari luar? Perangkat mana yang berada di antara keduanya, seberapa jauh koneksinya?

Terima kasih!

1
ssc-hrep3 5 Agustus 2019, 21:42

1 menjawab

Jawaban Terbaik

Saya pikir Anda hampir sampai.

Kemudian, saya membuka koneksi Java ke tautan http://example-route.apps.internal/test123< /a>. Saya juga sudah mencoba menggunakan https. Hasilnya sama. Java menolak untuk terhubung ke URL ini.

Anda harus menggunakan http://example-route.apps.internal:8080/test123. Aplikasi Anda diatur untuk mendengarkan di $PORT, yang selalu 8080 dalam versi CF saat ini.

Biasanya Anda tidak perlu khawatir tentang ini karena lalu lintas Anda masuk melalui Gorouter yang menerjemahkan untuk Anda (memetakan port eksternal 80 -> internal 8080). Dengan rute internal, lalu lintas bersifat langsung sehingga tidak ada transformasi. Itu sebabnya Anda perlu menggunakan port 8080 di URL Anda.

Atau, Anda dapat menggunakan mekanisme penemuan layanan seperti Eureka atau Konsul, tetapi itu bukan keharusan. Dalam hal ini, layanan akan mengetahui bahwa ia mendengarkan pada 8080 dan mendaftarkannya di registri.

Sejauh HTTPS, itu rumit. Aplikasi Anda hanya mendengarkan pada 80/HTTP. Anda harus mengubahnya untuk mendengarkan pada 443/HTTPS, tetapi kemudian Anda memerlukan sertifikat dan konfigurasi server yang berbeda. Secara teknis mungkin, tapi ini adalah sekaleng cacing.

Dalam beberapa versi yang lebih baru, Envoy hadir dan menerima lalu lintas HTTPS ke dalam wadah, dapat membuat HTTPS lebih mudah tetapi masih bukan slam dunk (setidaknya pada saat penulisan). Saya berharap ini akan menjadi lebih baik di masa depan.

Haruskah saya menyelesaikan DNS internal ini?

DNS internal membantu menemukan aplikasi Anda yang lain, bukan portnya. Jika tidak, Anda perlu mengelola alamat IP, yang sering berubah, dan itu akan membutuhkan sesuatu seperti Eureka atau Konsul.

Port mana yang benar jika saya hanya menggunakan port variabel env?

Lihat di atas.

Bagaimana saya harus membaca port ini dari aplikasi lain?

Itu selalu 8080 saat ini, dan telah selama beberapa tahun. Itu tidak mungkin berubah, jadi Anda mungkin bisa membuat kode keras atau mengaturnya dalam file konfigurasi dengan aman.

Seberapa aman komunikasi, jika HTTP digunakan sebagai pengganti HTTPS? (Saya berasumsi HTTPS tidak memungkinkan secara internal). Apakah seaman koneksi HTTPS dari luar? Perangkat mana yang berada di antara, seberapa jauh koneksinya?

Lalu lintas tidak akan dapat diakses secara eksternal karena tidak akan meninggalkan Sel dalam beberapa kasus atau kasus terburuk berjalan di antara dua Sel, tetapi lalu lintas akan terlihat secara internal karena tidak dienkripsi. Itu berarti Anda harus lebih percaya pada penyedia CF Anda, yang akan memiliki akses ke lalu lintas internal.

Jika itu HTTPS, hanya seseorang dengan kunci yang dapat mendekripsinya. Anda masih harus mempercayai penyedia Anda karena mereka kemungkinan bisa mendapatkan kunci & menggunakannya untuk mendekripsi lalu lintas. Itu hanya akan lebih berhasil bagi mereka daripada jika lalu lintas tidak dienkripsi.

Semoga membantu!

3
Daniel Mikusa 6 Agustus 2019, 16:37