Soru Şifrelenmiş ve şifrelenmemiş http bağlantılarının tek bir bağlantı noktasından nasıl kaldırılacağı


Lütfen aşağıdaki şemaya bir göz atın.

alt text

Bu nasıl olmalı?

  • Bir uzak http: // myhost.com:8080/* isterse, istek geridöngü arabiriminin 8008 numaralı portunu dinleyen http sunucusuna iletilmelidir. Bu kolay kısım.

  • Uzak bir kullanıcı http: // myhost.com:8080/specialurl ... istediğinde

    • Uygulama düzeyinde bir ağ geçidi olarak hareket eden program, bağlantıyı şifreli bir oturuma yükseltebilmelidir (bağlantı noktalarını değiştirmeden)

    • Uzak tarayıcı ile şifrelenmiş bir oturum kurduktan sonra, geridönüş arabiriminin 8000 portunu dinleyen C programına talebi iletmelidir.

Sorularım:

  1. Hiç böyle bir çözümü bir üretim ortamında konuştunuz mu? Eğer varsa ...
  2. Uygulama ağ geçidi olarak kullanmak için hangi ürünü kullandınız?
  3. Bir yapılandırma örneği verebilir misiniz?

Zor kısıtlamalar:

  • ben güvenlik duvarı üzerinde kontrol yokve iç sunucuya dış trafiği alabildiğim tek port 8080'dir. Bağlantı noktası numarası alakasızdır, güvenlik duvarı seviyesinde dahili sunucuya gelen trafiği yönlendiren tek bir port var.
  • İç sunucu Linux'u çalıştırıyor olmalı (şu anda Debian Lenny çalışıyor)
  • Uzak kullanıcılar, bu sunucuya erişmek için mevcut bir web tarayıcısından ve İnternet bağlantısından başka bir şeye ihtiyaç duymamalıdır. Bu, SSH ile ters port iletiminin burada bir seçenek olmadığı anlamına gelir.
  • Üretimde test edilmiş ve kolayca dağıtılabilen bir ürüne ihtiyacım var. Kendi uygulama ağ geçidini geliştirmek istemiyorum (eğer durum buysa, sanırım bu soruyu Sunucu Hatası'nda sormak yerine Yığın Taşması'nda soruyordum).

Yumuşak kısıtlamalar:

  • Apache'yi bir uygulama ağ geçidi olarak kullanmaktan kaçınmak isterim (ancak tek tercihim olsa bunu yapmaya istekli olmama rağmen)
  • Mümkünse, uygulama ağ geçidi, olgun, açık kaynaklı bir yazılım ürünü olmalıdır.

Ürünler uygulama ağ geçitleri kadar denendi (başarısız)

  • nginx
  • lighttpd'nin
  • pound

İlgili RFC'ler

  • RFC2817 (... Mevcut bir TCP bağlantısı üzerinden Aktarım Katmanı Güvenliği'ni (TLS) başlatmak için HTTP / 1.1'deki Yükseltme mekanizmasının nasıl kullanılacağını açıklar. Bu, güvenli olmayan ve güvenli HTTP trafiğinin aynı iyi bilinen bağlantı noktasını paylaşmasına izin verir ...)
  • RFC2818 (... Internet üzerinden HTTP bağlantılarını güvenli hale getirmek için TLS'yi nasıl kullanacağınızı açıklar. Mevcut uygulama, SSL'yi SSL üzerinden (TLS'ye göre öncü) katmanlamak, güvenli trafiği farklı bir sunucu portu kullanarak güvenli trafiğe ayırmaktır. ...)

10
2017-07-31 01:51


Menşei


"Uzak bir kullanıcı http: // myhost.com:8080/specialurl isterse ... Uygulama düzeyinde bir ağ geçidi olarak hareket eden program, şifrelenmiş bir oturuma bağlantıyı (bağlantı noktalarını değiştirmeden) yükseltebilmelidir" ... Bu müşteri tarafında mümkün mü? Bir müşteri tarayıcısı, https içermeyen bir URL aracılığıyla SSL'yi çalıştırabilir mi? - Adam Brand
Merhaba Adam ve yorumunuzu bıraktığınız için teşekkürler. Talep ettikten sonra myhost.com:8080/specialurl, tarayıcıya yönlendirilmelidir myhost.com:8080/specialurl. Diğer tarayıcılar hakkında emin değilim, ancak Opera ve Firefox'un son sürümleri bunu sorunsuz bir şekilde destekliyor gibi görünüyor. - alemartini


Cevaplar:


Hepsine hükmedecek bir liman, Birisinin en azından java dünyasında uyguladığı gösterir.

Hiç böyle bir çözümü bir üretim ortamında konuştunuz mu?

Yapmadım - ne de bunu tavsiye ederim. Bir danışman olarak müşterilerimi standart ve kanıtlanmış teknolojileri kullanmaya teşvik ediyorum. RFC'leri kenar durumları haricinde hiçbir sistem düzgün bir şekilde uygulamıyor gibi görünüyor ve bu benim önermek veya desteklemek istediğim bir şey değil.


1
2017-07-31 01:57



Merhaba Stan ve geri bildirim için teşekkürler. Grizzly'nin farkında değildim ve maalesef Java'ya aşina değilim. Hiç böyle bir çözümü bir üretim ortamında konuştunuz mu? Bunu nasıl yapacağınızı gösteren bir örnek paylaşırsanız harika olur. Tekrar teşekkürler, Alex. - alemartini
Tamam, cevabınızı düzenlediğiniz ve daha fazla bilgi eklediğiniz için teşekkür ederiz. Görebildiğiniz gibi, şimdi daha açık bir şekilde, olgun bir ürün aradığımı belirterek sorumu daralttım. Bakalım birisi bunun için iyi bir cevap buluyorsa. Apache'nin Linux dünyasında RFC2817'yi destekleyen tek ve tek uygulama olduğuna inanmak zor. Ama eğer durum böyleyse, ya da başka birinin başka bir ürünle böyle bir şeyi konuşlandırdığı gerçek dünya deneyimi yoksa, bunu Apache ile çözmeye çalışmak dışında bir seçeneğim olmayacağını düşünüyorum. - alemartini


Apache burada sana yardım etmeyecek. Herhangi bir bağlantı noktasında yalnızca HTTP veya HTTPS bağlantılarını (her ikisini de değil) dinleyebilir.

Bildiğim kadarıyla, bu işlevselliği uygulayan "olgun ürün" yoktur. Ağ yöneticinizin güvenlik duvarında başka bir delik açmasını sağlayın veya birden fazla dinleme bağlantı noktası kurabileceğiniz harici bir son noktaya VPN veya SSH tüneli ayarlayın.


0
2017-08-02 17:24