Apache Loadbalancer ve arka uçlar arasında Https kullanma


30

2 apache sunucusunun önünde loadbalancer olarak yapılandırılmış bir apache (2.4) sunucusu kullanıyorum. Loadbalancer ve arka uçlar arasında http bağlantıları kullandığım zaman işe yarar, ancak https kullanmak işe yaramaz. Loadbalancer yapılandırması:

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
  BalancerMember https://[Backend1]:443/test
  BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster

Arka uçlar şimdilik yalnızca kendinden imzalı sertifikalara sahiptir, bu nedenle sertifika doğrulamanın devre dışı bırakılması.

Loadbalancer'daki hata günlüğü aşağıdakileri içerir:

[proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request body failed to [Backend1]:443 ([Backend1])
[proxy:error] [pid 31202:tid 140325875570432] [client ...] AH00898: Error during SSL Handshake with remote server returned by /test/test.jsp
[proxy_http:error] [pid 31202:tid 140325875570432] [client ...] AH01097: pass request body failed to [Backend1]:443 ([Backend1]) from [...] ()

Tarayıcıdaki hata sayfası şunları içerir:

Proxy Error

The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server

Yukarıda da belirttiğim gibi, yapılandırmayı http protokolüne değiştirmek ve port 80 çalışıyor. Ayrıca, istemci ile loadbalancer arasındaki bağlantıyı da https ile bağlar, böylece loadbalancer'ın ssl modülü düzgün şekilde kuruluyormuş gibi görünür. Https üzerinden doğrudan arka uca bağlanmak da herhangi bir hata vermez.

Zaman ayırdığınız için şimdiden teşekkür ederiz


Düzenleme: Anladım ki, sorun ortak sertifikalarımın sunucu adıyla eşleşmemesidir. SSLProxyVerify'nin hiçbirinin bu uyumsuzluğun göz ardı edilmesine neden olacağını düşünmemiştim , ancak yok. Apache 2.4.5'ten önce bu kontrol SSLProxyCheckPeerCN kapalı kullanılarak devre dışı bırakılabilir, ancak daha yüksek sürümlerde (2.4.7 kullanıyorum) SSLProxyCheckPeerName off seçeneğinin de belirtilmesi gerekir.

Sslproxycheckpeername için Apache belgeleri

Çalışma konfigürasyonu şöyle görünür:

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

<Proxy balancer://testcluster>
  BalancerMember https://[backend1]:443/test
  BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster

Maalesef, itibarsızlık nedeniyle kendi soruma cevap veremiyorum bu yüzden sorumu düzelttim, umarım bu benzer bir sorunla karşılaşan birine yardımcı olur


İlginç. Bunu apache2.2 ile yapıyordum ve hiçbir zaman SSLProxyVerify'yi hiçbir zaman yapmak zorunda kalmamıştım ve hiçbir zaman kendinden imzalı sertifikalarla sorunum olmadı. Arka uç sunucunun iyi olduğundan emin misin?
ETL

@ETL "SSLProxyVerify none" gerekli olup olmadığını bilmiyorum, az önce sorunu çözebileceğini ümit ettim. Yük dengeleyici sunucusundaki "wget ​​https: // [backend1] /test/test.jsp --no-check-sertifika" ifadesi beklenen dosyayı indirir. ng
kullanıcı3240383

Yanıtlar:


16

Sorunun ortak sertifika adının sunucu adıyla eşleşmemesi sorunu ortaya çıktı.

Apache 2.4.5'ten önce bu kontrol kullanılarak devre dışı bırakılabilir, SSLProxyCheckPeerCN offancak daha yüksek sürümlerde (2.4.7 gibi) SSLProxyCheckPeerName offde belirtilmesi gerekir.

İçin Apache dokümantasyonu SSLProxyCheckPeerName

Çalışma konfigürasyonu şöyle görünür:

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

<Proxy balancer://testcluster>
  BalancerMember https://[backend1]:443/test
  BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster

Sahip olduğunuz Apache sürümünü kontrol edebilirsiniz :

apachectrl -V

Hey Yapılandırma biraz farklı olmadıkça aynı sorunu yaşıyorum: <Location /margin-tool> ProxyPass https://xxxx.thoughtworks.net:8443/margin-tool ProxyPassReverse https://xxxx.thoughtworks.net:8443/margin-tool </Location>Aynı ayarlar çalışmıyor. Herhangi bir fikir?
user157735

0

Aşağıya eklemek sorunu çözdü

SSLProxyProtocol +TLSv1

5
Mistik yapılandırma örnekleri vermek iyi kalitede bir cevap değildir. İnternetten kopyalanan yapıştırma dizeleri, profesyonel bir sistem yöneticisinin yaptığı gibi değildir. Açıkla, ne yaptığını ve nedenini açıkla.
peterh, Monica’nın

java12 ile bu koştu - diğer şeylerin yanı sıra, bu benim sorunum çözüldü ....
womd

-2

apache 2.4.9 kullanıyorum ve aşağıdaki kodu httpd-ssl.conf'a ekliyorum

SSLProxyProtocol + SSLv3 + TLSv1 + TLSv1.1

sorunları çözdüm


3
POODLE'ı hiç duydun mu? SSLv3 devre dışı bırakılmalıdır.
Sven

2
SSLv3 savunmasızdır
içeriden
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.