Şifrelenmiş ve şifrelenmemiş http bağlantılarını tek bir bağlantı noktası üzerinden yönetme


10

Lütfen aşağıdaki şemaya bakınız.

alternatif metin

Bu nasıl olmalı?

  • Bir uzaktan kumanda http: // myhost.com:8080/* istediğinde, istek geri döngü arabiriminin 8008 bağlantı noktasını dinleyen http sunucusuna iletilmelidir. Bu kolay kısmı.

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

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

    • Uzak tarayıcı ile şifreli bir oturum oluşturduktan sonra, isteği geri döngü arabiriminin 8000 bağlantı noktasını dinleyen C programına iletmelidir.

Sorularım :

  1. Hiç böyle bir çözümü üretim ortamına uyguladınız mı? Eğer varsa ...
  2. Uygulama ağ geçidi olarak 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 yok ve ben iç sunucuya dış trafik alabilirsiniz ettiği tek port port numarası alakasız 8080'dir, şey duvarı düzeyinde tek bir liman açık olduğunu olduğunu ileri gelen dahili sunucuya giden trafik.
  • Dahili sunucu Linux kullanıyor olmalıdır (şu anda Debian Lenny çalışıyor)
  • Uzak kullanıcılar, bu sunucuya erişmek için geçerli bir web tarayıcısından ve İnternet bağlantısından başka bir şeye ihtiyaç duymamalıdır. Bu, SSH üzerinden ters bağlantı noktası iletmenin 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çidimi geliştirmek için bakmıyorum (bu durumda, sanırım Yığın Taşması'nda bu soruyu Sunucu Hatası'nda sormak yerine soruyordum).

Yumuşak kısıtlamalar :

  • Apache'yi uygulama ağ geçidi olarak koymaktan kaçınmak istiyorum (mümkün olan tek seçenekse bunu yapmaya istekli olmama rağmen)
  • Mümkünse, uygulama ağ geçidi olgun ve açık kaynaklı bir yazılım ürünü olmalıdır.

Uygulama ağ geçitleri kadar denenmiş ürünler (başarı olmadan)

  • 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ını sağlar ...)
  • RFC2818 (... , Internet üzerinden HTTP bağlantılarının güvenliğini sağlamak için TLS'nin nasıl kullanılacağını açıklar. Mevcut uygulama, HTTP'yi SSL üzerinden katmanlamak (TLS'nin öncüsü), güvenli trafiği farklı bir sunucu bağlantı noktası kullanarak güvenli olmayan trafikten ayırmaktır ... )

"Uzak bir kullanıcı http: // myhost.com:8080/specialurl ... istediğinde Uygulama düzeyinde ağ geçidi görevi gören programın bağlantıyı şifreli bir oturuma (bağlantı noktalarını değiştirmeden) yükseltebilmesi gerekir" ... nasıl müşteri tarafında mümkün mü? İstemci tarayıcısı, https içermeyen bir URL üzerinden SSL çalıştırmayı destekleyecek mi?
Adam Brand

Merhaba Adam ve yorumunuzu bıraktığınız için teşekkürler. Myhost.com:8080/specialurl isteğinde bulunduktan sonra , tarayıcı myhost.com:8080/specialurl adresine yönlendirilmelidir . Diğer tarayıcılardan emin değilim, ancak Opera ve Firefox'un son sürümleri bunu sorunsuz bir şekilde destekliyor gibi görünüyor.
alemartini

Yanıtlar:


1

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

Hiç böyle bir çözümü bir üretim ortamında kullandınız mı?

Ben değil - ne de hiç yapılmasını tavsiye ederim. Danışman olarak müşterilerimi standart ve kanıtlanmış teknolojileri kullanmaya teşvik etmeye çalışıyorum. Hiçbir sistem, bu RFC'leri uç durumlar dışında düzgün bir şekilde uygulamıyor gibi görünmüyor ve bu, önermek veya desteklemek istediğim bir şey olmaz.


Merhaba Stan ve geri bildirim için teşekkür ederim. Grizzly'nin farkında değildim ve ne yazık ki Java'ya aşina değilim. Hiç böyle bir çözümü bir üretim ortamında kullandınız mı? Bunu nasıl yapacağınızı gösteren bir örneği paylaşabilmeniz harika olurdu. Tekrar teşekkürler, Alex.
alemartini

Tamam, cevabınızı düzenlediğiniz ve daha fazla bilgi eklediğiniz için teşekkürler. Gördüğünüz gibi, şimdi olgun bir ürün aradığımı daha açık bir şekilde belirterek sorumu daralttım. Birisinin buna iyi bir cevap bulup bulmadığını görelim. Apache'nin Linux dünyasında RFC2817'yi destekleyen tek ve tek uygulama olduğuna inanmak zor. Ama durum buysa, ya da başka hiç kimse böyle bir şeyi başka bir ürünle konuşlandırırken gerçek dünya deneyimine sahip değilse, bunu Apache ile çözmeye çalışmak dışında bir seçeneğim olmayacağını düşünüyorum.
alemartini

0

Apache burada size yardımcı olmayacak. Herhangi bir bağlantı noktasında yalnızca HTTP veya HTTPS bağlantılarını (her ikisini birden değil) dinleyebilir.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.