Cách để làm điều này là sử dụng tính năng ssl peek được giới thiệu trong Squid 3.5. Nhìn thấy đây để được giải thích chi tiết. Xin lưu ý rằng bạn sẽ cần phải biên dịch bằng một trong hai --with-gnutls
hoặc --with-openssl
(kiểm tra mực -v
). Một số bản phân phối bỏ chúng ra.
Nói tóm lại, cấu hình mực có liên quan trông như thế này.
acl denylist_ssl ssl::server_name google.com # KHÔNG phải tên miền dst
acl step1 at_step SslBump1
ssl_bump nhìn trộm bước 1
mối nối ssl_bump !denylist_ssl # cho phép mọi thứ không có trong danh sách từ chối
ssl_bump chấm dứt tất cả # chặn mọi thứ khác
https_port 3129 chặn ssl-bump cert=/etc/squid/dummy.pem
(Ngoài ra: Tôi không chắc tại sao chúng ta chỉ cần xem qua bước 1 chứ không phải bước 2 vì bước 2 chỉ liên quan đến việc nhận chứng chỉ máy chủ. Các tài liệu hoàn toàn không làm rõ điều này. Sử dụng ssl_bump xem tất cả
như họ khuyến nghị làm cho điều này ngừng hoạt động hoàn toàn).
Và sau đó thực hiện nhảy chuyển hướng cổng 443 đến 3129 thông thường bằng cách sử dụng iptables (hoặc nghe mực trực tiếp trên 443 nếu bạn thích).
-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3129
Bạn có thể sử dụng bất kỳ chứng chỉ nào cho hình nộm, chúng tôi thực sự không bao giờ sử dụng nó (vì chúng tôi không giải mã lưu lượng truy cập).
Một cái gì đó như thế này hoạt động.
openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout dummy.pem -out dummy.pem
Nguồn:
[1] https://unix.stackexchange.com/questions/613359/setting-up-squid-transparent-proxy-with-ssl-bumping-on-debian-10
[2] https://web.archive.org/web/20210128152111/https://www.cammckenzie.com/blog/index.php/2018/07/19/squid-https-interception-and-filtering-without-client- giấy chứng nhận/
[3] https://wiki.squid-cache.org/Features/SslPeekAndSplice