Câu hỏi Có thể bỏ qua chứng chỉ proxy proxy Apache không


Để biết thông tin cơ bản: (Câu hỏi ở dưới cùng)

Tôi đang cố gắng kết nối với một khách hàng, những người 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ạ các ánh xạ URI khác nhau đến các máy chủ khác nhau. Ví dụ:

https://PROXY_SERVER/SERVER1/{REQUEST}

Điều này sẽ gửi {REQUEST} đến server1

https://PROXY_SERVER/SERVER2/{REQUEST}

sẽ gửi {REQUEST} đến 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/

Điều này là do Apache 2.2 không kiểm tra xem chứng chỉ có phù hợp hay không (1.1.1.1! = Www.all_servers.com)

Tuy nhiên, trong Apache 2.4, bây giờ tôi nhận được các vấn đề về chứng chỉ (đúng như vậy). (Mã chính xác này hoạt động trên hộp apache 2.2)

[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, vì một máy chủ sẽ hoạt động, 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/

Nhưng nhiều máy chủ sẽ không


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

Có cách nào để buộc mod_proxy bỏ qua các chứng chỉ phù hợp không. Hoặc là có một cách tốt hơn để làm điều này.

Cảm ơn vì đã giúp đỡ!


19
2017-10-10 11:40


gốc


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
Bỏ phiếu để chuyển sang ServerFault. - Bruno


Các câu trả lời:


Bạn có thể đặt SSLProxy* tùy chọn trên máy chủ Apache của bạn (đây là một máy khách với 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 làm thế nào điều này sẽ làm việc với địa chỉ IP (vì có đị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 không chắc nó hoạt động như thế nào đối với địa chỉ IP.

Có địa chỉ IP trong DNS Các tiện ích mở rộng SAN hoặc trong CN không tuân thủ tiêu chuẩn với HTTPS:

Nếu phần mở rộng subjectAltName thuộc loại dNSName hiện diện, thì PHẢI được sử dụng làm nhận dạng. Nếu không, (cụ thể nhất)   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 Common Name là thực tế hiện tại, nó là   không được chấp nhận và Cơ quan cấp chứng nhận được khuyến khích sử dụng   dNSName thay thế.

[...]

Trong một số trường hợp, URI được chỉ định là đị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.


19
2017-10-10 11:52



Cảm ơn điều này làm việc tốt, tôi chỉ có checkCN off, một khi tôi đã thêm checkName để tắt, tất cả bắt đầu làm việc kỳ diệu - Gwynnie
Tắt tính năng này làm cho kết nối đó có thể dễ bị tấn công bởi các cuộc tấn công MITM, trừ khi có lẽ bạn đã nhập các chứng chỉ đó vào SSLProxyCACertificate* trực tiếp (và có chỉ có những certs ở đó). - Bruno