Saya menggunakan server apache (2.4) yang dikonfigurasi sebagai loadbalancer di depan 2 server apache. Ini berfungsi dengan baik ketika saya menggunakan koneksi http antara loadbalancer dan backends, namun menggunakan https tidak berfungsi. Konfigurasi loadbalancer:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
BalancerMember https://[Backend1]:443/test
BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Backends hanya memiliki sertifikat yang ditandatangani sendiri untuk saat ini, itulah sebabnya mengapa verifikasi sertifikat dinonaktifkan.
Log kesalahan pada loadbalancer berisi yang berikut ini:
[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 [...] ()
Halaman kesalahan di browser berisi:
Proxy Error
The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server
Seperti yang telah saya katakan di atas mengubah konfigurasi ke protokol http dan port 80 berfungsi. Juga https koneksi antara klien dan loadbalancer berfungsi, sehingga modul ssl loadbalancer tampaknya diatur dengan benar. Menghubungkan langsung ke backend melalui https juga tidak menghasilkan kesalahan.
Terima kasih sebelumnya atas waktu Anda
Sunting: Saya menemukan jawabannya, masalahnya adalah bahwa nama umum sertifikat saya tidak cocok dengan nama server. Saya pikir tidak ada SSLProxyVerify akan menyebabkan ketidakcocokan ini diabaikan, tetapi tidak. Sebelum apache 2.4.5 cek ini dapat dinonaktifkan menggunakan SSLProxyCheckPeerCN off tetapi pada versi yang lebih tinggi (saya menggunakan 2.4.7) SSLProxyCheckPeerName off juga perlu ditentukan.
Dokumentasi Apache untuk sslproxycheckpeername
Konfigurasi kerja terlihat seperti ini:
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
Sayangnya saya tidak dapat menjawab pertanyaan saya sendiri karena kurangnya reputasi, jadi saya mengedit pertanyaan saya, saya harap ini membantu siapa saja yang mengalami masalah serupa
sumber
Jawaban:
Masalahnya ternyata adalah bahwa nama umum sertifikat tidak cocok dengan nama server.
Sebelum Apache 2.4.5 pemeriksaan ini dapat dinonaktifkan menggunakan
SSLProxyCheckPeerCN off
tetapi pada versi yang lebih tinggi (seperti 2.4.7)SSLProxyCheckPeerName off
juga perlu ditentukan.Dokumentasi Apache untuk
SSLProxyCheckPeerName
Konfigurasi kerja terlihat seperti ini:
Anda dapat memeriksa versi Apache yang Anda miliki dengan:
sumber
<Location /margin-tool> ProxyPass https://xxxx.thoughtworks.net:8443/margin-tool ProxyPassReverse https://xxxx.thoughtworks.net:8443/margin-tool </Location>
Pengaturan yang sama tidak berfungsi. Ada ide?Menambahkan di bawah ini menyelesaikan masalah
sumber
saya menggunakan apache 2.4.9 dan menambahkan ke httpd-ssl.conf kode berikut
SSLProxyProtocol + SSLv3 + TLSv1 + TLSv1.1
Saya telah memecahkan masalah
sumber