2013-10-10 22 views
15

Để biết thông tin cơ bản: (Câu hỏi ở dưới)Có thể bỏ qua chứng chỉ proxy ủy quyền Apache

Tôi đang cố gắng kết nối với một khách hàng, có 8 máy chủ, tất cả đều có địa chỉ IP duy nhất. Máy khách sử dụng cùng một chứng chỉ SSL trên tất cả các máy chủ (ví dụ này, cert name == www.all_servers.com). Khách hàng chỉ cho phép các yêu cầu gửi đến qua https.

Tôi đang cố gắng tạo proxy apache bằng cách sử dụng mod_proxy ánh xạ ánh xạ URI khác nhau cho các máy chủ khác nhau. Ví dụ:

https://PROXY_SERVER/SERVER1/{REQUEST} 

này sẽ gửi {YÊU CẦU} để server1

https://PROXY_SERVER/SERVER2/{REQUEST} 

sẽ gửi {} YÊU CẦU tới server2. Cho đến nay, khá đơn giản.

Trong Apache 2.2, điều này có thể đạt được bằng cách sử dụng các địa chỉ IP như vậy:!

SSLProxyEngine On 

ProxyPass /server1 https://1.1.1.1/ 
ProxyPassReverse /server1 https://1.1.1.1/ 

ProxyPass /server2 https://1.1.1.2/ 
ProxyPassReverse /server2 https://1.1.1.2/ 

này là do Apache 2.2 không kiểm tra nếu giấy chứng nhận phù hợp (1.1.1.1 = www.all_servers.com)

Tuy nhiên, trong Apache 2.4, hiện tôi đang gặp sự cố chứng chỉ (đúng như vậy). (Mã chính xác này hoạt động trên một apache 2.2 hộp)

[Thu Oct 10 12:01:48.571246 2013] [proxy:error] [pid 13282:tid 140475667224320] (502)Unknown error 502: [client 192.168.1.1:48967] AH01084: pass request body failed to 1.1.1.1:443 (1.1.1.1) 
[Thu Oct 10 12:01:48.571341 2013] [proxy:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH00898: Error during SSL Handshake with remote server returned by /server1/asd 
[Thu Oct 10 12:01:48.571354 2013] [proxy_http:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH01097: pass request body failed to 1.1.1.1:443 (1.1.1.1) from 192.168.1.1() 

tôi không thể sử dụng/etc/hosts, như một máy chủ sẽ làm việc, sử dụng:

1.1.1.1 www.all_servers.com 

SSLProxyEngine On 
ProxyPass /server1 https://www.all_servers.com/ 
ProxyPassReverse /server1 https://www.all_servers.com/ 

Tuy nhiên, nhiều máy chủ sẽ không


vì vậy, câu hỏi thực tế:

có cách nào để cho ce mod_proxy để bỏ qua các chứng chỉ phù hợp với lỗi. Hoặc là có một cách tốt hơn để làm điều này.

Cảm ơn bạn đã trợ giúp về điều này!

+0

Chỉ để tránh nhầm lẫn, bạn có thể gọi cho khách hàng/khách hàng của bạn một cái gì đó khác hơn là "khách hàng", khi bạn nói về máy chủ. – Bruno

+0

Bỏ phiếu để chuyển sang ServerFault. – Bruno

Trả lời

15

Bạn có thể đặt các tùy chọn SSLProxy* trên máy chủ Apache của mình (máy khách là khách hàng có liên quan đến các kết nối proxy ngược).

Điều này được thực hiện với SSLProxyCheckPeerCN (tắt theo mặc định trong 2.2, nhưng theo mặc định trong 2.4), nhưng tôi không chắc chắn cách thức này sẽ hoạt động với địa chỉ IP (vì địa chỉ IP trong CN không phải là tiêu chuẩn). Có một tùy chọn mới trong Apache Httpd 2.4 để kiểm tra SAN (SSLProxyCheckPeerName), nhưng tôi cũng không chắc chắn nó hoạt động như thế nào đối với địa chỉ IP.

Có địa chỉ IP trong DNS phần mở rộng SAN hoặc trong CN là không đạt tiêu chuẩn phù hợp với HTTPS:

Nếu một phần mở rộng SubjectAltName loại dNSName hiện diện, mà phải được sử dụng như danh tánh. Nếu không, (cụ thể nhất) Common Trường tên trong trường Chủ đề của chứng chỉ PHẢI được sử dụng. Mặc dù việc sử dụng Tên thông thường là thực tế hiện tại, nhưng không được sử dụng và Cơ quan cấp chứng chỉ sử dụng tên dNSName thay thế.

[...]

Trong một số trường hợp, URI được chỉ định làm địa chỉ IP thay vì tên máy chủ. Trong trường hợp này, đối tượng iPAddress phải có mặt trong chứng chỉ và phải khớp chính xác với IP trong URI.

+1

Cảm ơn điều này đã làm tốt, tôi chỉ có checkCN tắt, khi tôi thêm checkName vào, tất cả bắt đầu làm việc một cách kỳ diệu – Gwynnie

+1

Tắt chức năng này. 'trực tiếp (và chỉ có * những certs đó). – Bruno

Các vấn đề liên quan