{"id":19552,"date":"2017-05-09T06:49:44","date_gmt":"2017-05-08T22:49:44","guid":{"rendered":"https:\/\/2blog.ilc.edu.tw\/25793\/2017\/05\/09\/squid-proxy-server-ssl\/"},"modified":"2021-03-18T17:25:01","modified_gmt":"2021-03-18T09:25:01","slug":"squid-proxy-server-ssl","status":"publish","type":"post","link":"https:\/\/2blog.ilc.edu.tw\/25793\/2017\/05\/09\/squid-proxy-server-ssl\/","title":{"rendered":"Squid Proxy Server SSL"},"content":{"rendered":"<p>\u53c3\u8003\u7db2\u7ad9\uff1a<br \/><a href=\"http:\/\/roberts.bplaced.net\/index.php\/linux-guides\/centos-6-guides\/proxy-server\/squid-transparent-proxy-http-https\" target=\"_blank\" rel=\"noopener noreferrer\">SQUID Transparent Proxy (HTTP+HTTPs)<\/a><br \/><a href=\"http:\/\/fingersworld.tian.yam.com\/posts\/40026568\" target=\"_blank\" rel=\"noopener noreferrer\">\u8a2d\u5b9aSQUID \u6210\u70ba HTTP\/HTTPS \u4ee3\u7406\u4f3a\u670d\u5668\u53ca\u555f\u52d5 ICAP client\u529f\u80fd<\/a><br \/><a href=\"http:\/\/chimerhapsody.blogspot.tw\/2013\/04\/squid-proxy-https.html\" target=\"_blank\" rel=\"noopener noreferrer\">Jedi Linuxer: \u5229\u7528 Squid \u4ee3\u7406\u4f3a\u670d\u5668(Proxy)\u5206\u6790 HTTPS \u9023\u7dda\u5167\u5bb9<\/a><br \/><a href=\"https:\/\/www.tectut.com\/2015\/08\/configure-squid-as-http-and-https-transparent-proxy\/\" target=\"_blank\" rel=\"noopener noreferrer\">Configure Squid as HTTP and HTTPS Transparent Proxy<\/a><br \/><a href=\"https:\/\/www.sbarjatiya.com\/notes_wiki\/index.php\/Configure_squid-3.3_in_transparent_mode_on_CentOS_7_with_SSL_bum\" target=\"_blank\" rel=\"noopener noreferrer\">Configure squid-3.3 in transparent mode on CentOS 7 with SSL bum &#8211; Notes Wiki<\/a><\/p>\n<p><span style=\"color: #0000ff\">CentOS 7.x x64<\/span><br \/><span style=\"color: #0000ff\">NAT Client\uff1a192.168.1.0\/24<\/span><br \/><span style=\"color: #0000ff\">NAT Server\uff1a192.168.1.254<\/span><br \/>1. \u5b89\u88dd perl-Crypt-OpenSSL-X509 \u5957\u4ef6<br \/># <span style=\"color: #ff0000\">yum install perl-Crypt-OpenSSL-X509 &#8211;enablerepo=epel<\/span><\/p>\n<p>2. \u521d\u59cb\u5316 Squid SSL DB<br \/># <span style=\"color: #ff0000\">\/usr\/lib64\/squid\/ssl_crtd -c -s \/var\/lib\/ssl_db<\/span><br \/><span style=\"color: #0000ff\">Initialization SSL db&#8230;<\/span><br \/><span style=\"color: #0000ff\">Done[@more@]<\/span><br \/>3. \u6539\u8b8a\u64c1\u6709\u8005\u53ca\u7fa4\u7d44<br \/># <span style=\"color: #ff0000\">chown -R squid.squid \/var\/lib\/ssl_db<\/span><\/p>\n<p>4. \u5982\u679c\u6709\u958b\u555f SELinux<br \/># <span style=\"color: #ff0000\">chcon -R -u system_u -t squid_conf_t \/var\/lib\/ssl_db<\/span><\/p>\n<p>5. \u4fee\u6539<span style=\"color: #0000ff\"> \/etc\/squid\/squid.conf<\/span><br \/>\u00a0\u00a0\u00a0 \u50c5\u5217\u51fa\u7279\u5225\u4fee\u6539\u7684\u5730\u65b9<br \/># <span style=\"color: #ff0000\">vim \/etc\/squid\/squid.conf<\/span><br \/><span style=\"color: #0000ff\">http_port 3130<\/span><br \/><span style=\"color: #0000ff\">http_port 3128 intercept<\/span><br \/><span style=\"color: #0000ff\">http_port 3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=\/etc\/squid\/ssl_cert\/myca.pem key=\/etc\/squid\/ssl_cert\/myca.pem<\/span><\/p>\n<p><span style=\"color: #0000ff\">#always_direct allow all<\/span><br \/><span style=\"color: #0000ff\">ssl_bump server-first all<\/span><br \/><span style=\"color: #0000ff\">#sslproxy_cert_error deny all<\/span><br \/><span style=\"color: #0000ff\">#sslproxy_flags DONT_VERIFY_PEER<\/span><\/p>\n<p><span style=\"color: #0000ff\">sslcrtd_program \/usr\/lib64\/squid\/ssl_crtd -s \/var\/lib\/ssl_db -M 4MB<\/span><br \/><span style=\"color: #0000ff\">sslcrtd_children 8 startup=1 idle=1<\/span><\/p>\n<p><span style=\"color: #0000ff\">coredump_dir \/var\/spool\/squid<\/span><br \/><span style=\"color: #0000ff\">shutdown_lifetime 1 second<\/span><\/p>\n<p>6. \u4f7f\u7528 OpenSSL \u4f86\u5efa\u7acb Squid \u6191\u8b49<br \/># <span style=\"color: #ff0000\">cp \/etc\/pki\/tls\/openssl.cnf \/etc\/pki\/tls\/openssl.cnf.$(date +%F)<\/span><br \/># <span style=\"color: #ff0000\">vim \/etc\/pki\/tls\/openssl.cnf<\/span><br \/><span style=\"color: #0000ff\">default_days\u00a0\u00a0\u00a0 = <span style=\"color: #ff0000\">1365\u00a0\u00a0\u00a0\u00a0<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # how long to certify for<\/span><\/p>\n<p><span style=\"color: #0000ff\">[ req_distinguished_name ]<\/span><br \/><span style=\"color: #0000ff\">countryName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = Country Name (2 letter code)<\/span><br \/><span style=\"color: #0000ff\">countryName_default\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <span style=\"color: #ff0000\">TW<\/span><\/span><br \/><span style=\"color: #0000ff\">countryName_min\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 2<\/span><br \/><span style=\"color: #0000ff\">countryName_max\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 2<\/span><\/p>\n<p><span style=\"color: #0000ff\">stateOrProvinceName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = State or Province Name (full name)<\/span><br \/><span style=\"color: #0000ff\">stateOrProvinceName_default\u00a0\u00a0\u00a0\u00a0 = Yilan<\/span><\/p>\n<p><span style=\"color: #0000ff\">localityName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = Locality Name (eg, city)<\/span><br \/><span style=\"color: #0000ff\">localityName_default\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <span style=\"color: #ff0000\">TouCheng<\/span><\/span><\/p>\n<p><span style=\"color: #0000ff\">0.organizationName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = Organization Name (eg, company)<\/span><br \/><span style=\"color: #0000ff\">0.organizationName_default\u00a0\u00a0\u00a0\u00a0\u00a0 =<span style=\"color: #ff0000\"> Elementary School<\/span><\/span><\/p>\n<p><span style=\"color: #0000ff\"># we can do this but it is not needed normally \ud83d\ude42<\/span><br \/><span style=\"color: #0000ff\">#1.organizationName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = Second Organization Name (eg, company)<\/span><br \/><span style=\"color: #0000ff\">#1.organizationName_default\u00a0\u00a0\u00a0\u00a0 = World Wide Web Pty Ltd<\/span><\/p>\n<p><span style=\"color: #0000ff\">organizationalUnitName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = Organizational Unit Name (eg, section)<\/span><br \/><span style=\"color: #0000ff\">organizationalUnitName_default\u00a0 = <span style=\"color: #ff0000\">Proxy Server<\/span><\/span><\/p>\n<p><span style=\"color: #0000ff\">commonName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = Common Name (eg, your name or your server&#8217;s hostname)<\/span><br \/><span style=\"color: #0000ff\">commonName_default\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <span style=\"color: #ff0000\">proxy.test.ilc.edu.tw<\/span><\/span><br \/><span style=\"color: #0000ff\">commonName_max\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 64<\/span><\/p>\n<p><span style=\"color: #0000ff\">emailAddress\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <span style=\"color: #ff0000\">test@gmail.com<\/span><\/span><br \/><span style=\"color: #0000ff\">emailAddress_max\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 64<\/span><\/p>\n<p>7. \u5efa\u7acb\u76ee\u9304<br \/># <span style=\"color: #ff0000\">mkdir \/etc\/squid\/ssl_cert<\/span><\/p>\n<p>8. \u6539\u8b8a\u76ee\u9304\u64c1\u6709\u8005\u53ca\u7fa4\u7d44<br \/># <span style=\"color: #ff0000\">chown -R squid.squid \/etc\/squid\/ssl_cert<\/span><\/p>\n<p>9. \u5207\u63db\u76ee\u9304<br \/># <span style=\"color: #ff0000\">cd \/etc\/squid\/ssl_cert<\/span><\/p>\n<p>10. \u5efa\u7acb Server Key\uff0c\u6309 Enter \u9375\u5373\u53ef<br \/># <span style=\"color: #ff0000\">openssl req -new -newkey rsa:1024 -days 1365 -nodes -x509 -keyout myca.pem -out myca.pem<\/span><br \/><span style=\"color: #0000ff\">Generating a 1024 bit RSA private key<\/span><br \/><span style=\"color: #0000ff\">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..++++++<\/span><br \/><span style=\"color: #0000ff\">&#8230;&#8230;&#8230;++++++<\/span><br \/><span style=\"color: #0000ff\">writing new private key to &#8216;myca.pem&#8217;<\/span><br \/><span style=\"color: #0000ff\">&#8212;&#8211;<\/span><br \/><span style=\"color: #0000ff\">You are about to be asked to enter information that will be incorporated<\/span><br \/><span style=\"color: #0000ff\">into your certificate request.<\/span><br \/><span style=\"color: #0000ff\">What you are about to enter is what is called a Distinguished Name or a DN.<\/span><br \/><span style=\"color: #0000ff\">There are quite a few fields but you can leave some blank<\/span><br \/><span style=\"color: #0000ff\">For some fields there will be a default value,<\/span><br \/><span style=\"color: #0000ff\">If you enter &#8216;.&#8217;, the field will be left blank.<\/span><br \/><span style=\"color: #0000ff\">&#8212;&#8211;<\/span><br \/><span style=\"color: #0000ff\">Country Name (2 letter code) [TW]:<\/span><br \/><span style=\"color: #0000ff\">State or Province Name (full name) [Yilan]:<\/span><br \/><span style=\"color: #0000ff\">Locality Name (eg, city) [TouCheng]:<\/span><br \/><span style=\"color: #0000ff\">Organization Name (eg, company) [Elementary School]:<\/span><br \/><span style=\"color: #0000ff\">Organizational Unit Name (eg, section) [Proxy Server]:<\/span><br \/><span style=\"color: #0000ff\">Common Name (eg, your name or your server&#8217;s hostname) [proxy.test.ilc.edu.tw]:<\/span><br \/><span style=\"color: #0000ff\">test@gmail.com []:<\/span><\/p>\n<p>11. \u5efa\u7acb Windows Client Key<br \/># <span style=\"color: #ff0000\">openssl x509 -in myca.pem -outform DER -out myca.der<\/span><\/p>\n<p>12. \u4fee\u6539\u9632\u706b\u7246\u8a2d\u5b9a<br \/># <span style=\"color: #ff0000\">iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0\/24 &#8211;dport 80 -j DNAT &#8211;to 192.168.1.254:3128<\/span><br \/># <span style=\"color: #ff0000\">iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0\/24 &#8211;dport 443 -j DNAT &#8211;to 192.168.1.254:3129<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u53c3\u8003\u7db2\u7ad9\uff1aSQUID Transparent Proxy (HTTP+HTTPs)\u8a2d\u5b9aSQUID \u6210\u70ba HTT &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/2blog.ilc.edu.tw\/25793\/2017\/05\/09\/squid-proxy-server-ssl\/\" class=\"more-link\">\u95b1\u8b80\u5168\u6587<span class=\"screen-reader-text\">\u3008Squid Proxy Server SSL\u3009<\/span><\/a><\/p>\n","protected":false},"author":55,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[117,135,136],"tags":[],"class_list":["post-19552","post","type-post","status-publish","format-standard","hentry","category-c-78462","category-c-78480","category-c-78481"],"meta_key":{"_pingme":["1"],"_encloseme":["1"],"lt_post_id":["687970"]},"_links":{"self":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/19552"}],"collection":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/comments?post=19552"}],"version-history":[{"count":1,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/19552\/revisions"}],"predecessor-version":[{"id":21064,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/posts\/19552\/revisions\/21064"}],"wp:attachment":[{"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/media?parent=19552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/categories?post=19552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2blog.ilc.edu.tw\/25793\/wp-json\/wp\/v2\/tags?post=19552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}