2008-08-18 30 views
25

Nội dung bộ nhớ cache máy chủ proxy (|| bất kỳ) có được yêu cầu bởi khách hàng qua https không? Vì máy chủ proxy không thể nhìn thấy chuỗi truy vấn hoặc tiêu đề http, tôi cho rằng chúng không thể.SSL cache máy chủ proxy có thể nhận được không? Nếu không, sẽ đáp ứng mã hóa cơ thể đủ?

Tôi đang xem xét một ứng dụng dành cho máy tính để bàn, do một số người đứng sau proxy công ty của họ điều hành. Ứng dụng này có thể truy cập các dịch vụ trên internet và tôi muốn tận dụng cơ sở hạ tầng bộ nhớ đệm trong Internet để 'đọc'. Nếu các máy chủ proxy lưu trữ không thể cache nội dung được phân phối SSL, thì việc mã hóa nội dung phản hồi có phải là một lựa chọn khả thi không?

Tôi đang xem xét tất cả các yêu cầu GET mà chúng tôi muốn có thể lưu trữ được yêu cầu trên http với cơ thể được mã hóa bằng cách sử dụng mã hóa bất đối xứng, trong đó mỗi khách hàng có khóa giải mã. Bất cứ lúc nào chúng tôi muốn thực hiện một GET mà không phải là bộ nhớ đệm, hoặc một hoạt động POST, nó sẽ được thực hiện qua SSL.

Trả lời

16

Không, không thể trực tiếp lưu vào bộ nhớ cache https. Toàn bộ thông tin liên lạc giữa máy khách và máy chủ được mã hóa. Một proxy nằm giữa máy chủ và máy khách, để lưu trữ nó, bạn cần có khả năng đọc nó, tức là giải mã mã hóa.

Bạn có thể làm điều gì đó để lưu vào bộ nhớ cache. Về cơ bản, bạn thực hiện SSL trên proxy của mình, chặn SSL được gửi tới máy khách. Về cơ bản dữ liệu được mã hóa giữa máy khách và proxy của bạn, nó được giải mã, đọc và lưu trữ, và dữ liệu được mã hóa và được gửi trên máy chủ. Trả lời từ máy chủ cũng được giải mã, đọc và mã hóa. Tôi không chắc làm thế nào bạn làm điều này trên phần mềm proxy lớn (như mực), nhưng nó là có thể.

Vấn đề duy nhất với phương pháp này là proxy sẽ phải sử dụng chứng chỉ tự ký để mã hóa nó cho khách hàng. Khách hàng sẽ có thể nói rằng một proxy ở giữa đã đọc dữ liệu, vì chứng chỉ sẽ không xuất phát từ trang gốc.

+0

Có cách nào để làm cho 2 yêu cầu HTTPS byte bằng để một máy chủ proxy có thể trở lại một phản ứng cache? – Pacerier

22

Nhận xét của Rory rằng proxy sẽ phải sử dụng chứng chỉ tự ký nếu không đúng sự thật.

Proxy có thể được triển khai để tạo chứng chỉ mới cho mỗi máy chủ SSL mới được yêu cầu xử lý và ký tên với chứng chỉ gốc chung. Trong kịch bản OP của một môi trường corportate, cert ký chung có thể dễ dàng được cài đặt như một CA đáng tin cậy trên các máy khách và họ sẽ sẵn sàng chấp nhận các chứng chỉ SSL "giả" này cho lưu lượng truy cập được ủy nhiệm vì sẽ không có tên máy chủ không khớp.

Trong thực tế này là chính xác như thế nào phần mềm như Charles Web Debugging Proxy cho phép kiểm tra lưu lượng SSL mà không gây ra lỗi bảo mật trong trình duyệt, vv

+1

Tôi khá bối rối khi tìm thấy điều này trong bất kỳ môi trường nào khác ngoài thử nghiệm; hy vọng điều này là bất hợp pháp ở hầu hết các quốc gia do có thể sâu nó sẽ mở - ví dụ: nếu CFO đang kiểm tra tài khoản ngân hàng của công ty thông qua cổng web, họ có thể sẽ không vui khi biết rằng CNTT có thể đánh hơi sự tương tác. –

+0

@Phil Về cơ bản, những gì các nhà cung cấp proxy ngược lại đang làm. Chỉ vì kết nối bạn đã thực hiện với trang web (proxy ngược) là an toàn không có nghĩa là dữ liệu của bạn được mã hóa đi khắp mọi nơi đến điểm cuối. –

+0

@ J.Money Có, nhưng câu hỏi đặc biệt về kết nối từ trình duyệt trong mạng A kết nối qua proxy tới máy chủ B. Máy chủ B nào sau đó là vấn đề hoàn toàn riêng biệt và thậm chí cả mã hóa đầu cuối lẫn nhau xác thực không đảm bảo dữ liệu trao đổi được sử dụng có trách nhiệm/hợp pháp/như dự định –

1

Tôi nghĩ rằng bạn chỉ nên sử dụng SSL và dựa trên một thư viện client HTTP làm bộ nhớ đệm (ví dụ: WinInet trên cửa sổ). Thật khó để tưởng tượng rằng những lợi ích của bộ đệm ẩn của doanh nghiệp là đáng để ghi lại một chương trình mã hóa bảo mật tùy chỉnh hoặc chứng chỉ thú vị trên proxy. Tồi tệ hơn, trên lược đồ mã hóa mà bạn đề cập, thực hiện các thuật toán mã hóa bất đối xứng trên cơ thể thực thể giống như một cú đánh tuyệt vời ở phía máy chủ của ứng dụng của bạn; có một lý do mà SSL sử dụng mật mã đối xứng cho tải trọng thực tế của kết nối.

1

Tôi nghĩ bạn chỉ nên sử dụng SSL và dựa vào thư viện máy khách HTTP có lưu vào bộ nhớ đệm (Ví dụ: WinInet trên cửa sổ). Thật khó để tưởng tượng rằng lợi ích của bộ nhớ đệm rộng của doanh nghiệp là đáng để viết một chương trình mã hóa bảo mật tùy chỉnh hoặc chứng chỉ thú vị trên proxy. Tồi tệ hơn, về chương trình encyrption mà bạn đề cập, thực hiện các thuật toán mã hóa bất đối xứng trên cơ thể thực thể có vẻ như một cú đánh tuyệt vời ở phía máy chủ của ứng dụng của bạn; có một lý do mà SSL sử dụng mật mã đối xứng cho tải trọng thực tế của kết nối.

Ứng dụng liên quan không phải là ứng dụng trình duyệt, ứng dụng dành cho máy tính để bàn sẽ truyền dữ liệu qua internet. Điều gì sẽ xảy ra là tất cả các trường hợp của ứng dụng sẽ được kéo cùng một mảnh ở xung quanh cùng một lúc. Dữ liệu này cần được bảo mật, nhưng tôi hy vọng sẽ tăng sự hoàn hảo bằng cách có một số phiên bản ứng dụng nhận phiên bản được lưu trong bộ nhớ cache từ máy chủ proxy của công ty.

Các khối dữ liệu nhỏ nhưng có thể được yêu cầu thường xuyên. Về cơ bản, tất cả các phiên bản ứng dụng sẽ yêu cầu cùng một dữ liệu với nhau cùng một lúc.

Cơ thể dữ liệu/thư ở phía máy chủ sẽ được mã hóa trước và được lưu vào bộ nhớ cache trong bảng băm được phân phối trong bộ nhớ. Mã hóa sẽ không được thực hiện trên cơ sở theo yêu cầu.

Tôi cũng đang điều tra bằng cách sử dụng một xe buýt thông báo, chẳng hạn như NServiceBus.

1

Check-out www.bluecoat.com là một proxy thương mại rằng trong thực tế THỂ làm https đánh chặn để chặn các trang web, hạn chế nội dung, kiểm tra để kiểm tra virus và nội dung cache (GET)

+0

Nó không phải là bằng cách từ bỏ chứng chỉ. Trong máy trạm môi trường của công ty sẽ có công ty tin cậy CA và nó được sử dụng bởi BlueCoat để từ chức các thông tin liên lạc. Vì vậy, đó là: site - [https] -> Bluecoat - [https] -> Người dùng –

+0

trang web bluecoat.com ... – Pacerier

0

Làm thế nào về việc thiết lập một máy chủ bộ nhớ cache trên máy chủ ứng dụng phía sau thành phần mã hóa phản hồi https? Điều này có thể hữu ích nếu bạn có thiết lập proxy ngược.

Tôi đang nghĩ đến một cái gì đó như thế này:

application server <---> Squid or Varnish (cache) <---> Apache (performs SSL encryption) 
Các vấn đề liên quan