Lütfen aşağıdaki şemaya bakınız.
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 :
- Hiç böyle bir çözümü üretim ortamına uyguladınız mı? Eğer varsa ...
- Uygulama ağ geçidi olarak hangi ürünü kullandınız?
- 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 ... )