<div dir="ltr">Hello Dear Squid Users,<div><br></div><div>I am trying to configure my Squid 4.0.17 to use an https connection between the client and the proxy.  I have added an https_port directive to squid.conf, but it must be misconfigured. When I test with a dev version of curl that supports https proxies, I am getting ERR_PROTOCOL_UNKNOWN errors.  Below is the curl output, my squid.conf, and access.log and cache.log snippets.</div><div><br></div><div><div>I appreciate any insights that you can offer.  Thank you very much,</div><div>-Masha</div></div><div><br></div><div><br></div><div>------------------------------<wbr>----------<br class="gmail-m_2280393313474431337gmail-Apple-interchange-newline"><div>curl output</div><div>------------------------------<wbr>----------<br></div><div></div></div><div>$ ~/bin/curl -v -x <a href="https://proxy.somwhere.com:443">https://proxy.somwhere.com:443</a> <a href="https://github.com">https://github.com</a></div><div>* Rebuilt URL to: <a href="https://github.com/">https://github.com/</a></div><div>*   Trying 54.210.69.61...</div><div>* TCP_NODELAY set</div><div>* Connected to <a href="http://proxy.somwhere.com">proxy.somwhere.com</a> (54.210.69.61) port 443 (#0)</div><div>* ALPN, offering http/1.1</div><div>* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH</div><div>* successfully set certificate verify locations:</div><div>*   CAfile: /etc/ssl/cert.pem</div><div>  CApath: none</div><div>* TLSv1.2 (OUT), TLS header, Certificate Status (22):</div><div>* TLSv1.2 (OUT), TLS handshake, Client hello (1):</div><div>* error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol</div><div>* Closing connection 0</div><div>curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol</div><div><br></div>------------------------------<wbr>----------<br class="gmail-m_2280393313474431337gmail-Apple-interchange-newline"><div>squid.conf</div><div>------------------------------<wbr>----------<br class="gmail-m_2280393313474431337gmail-Apple-interchange-newline"></div><div><div>acl localnet src <a href="http://10.0.0.0/8">10.0.0.0/8</a>     # RFC1918 possible internal network</div><div>acl localnet src <a href="http://172.16.0.0/12">172.16.0.0/12</a>  # RFC1918 possible internal network</div><div>acl localnet src <a href="http://192.168.0.0/16">192.168.0.0/16</a> # RFC1918 possible internal network</div><div>acl localnet src fc00::/7   # RFC 4193 local private network range</div><div>acl localnet src fe80::/10  # RFC 4291 link-local (directly plugged) machines</div><div><br></div><div>acl SSL_ports port 443</div><div>acl Safe_ports port 80          # http</div><div>acl Safe_ports port 81          # http</div><div>acl Safe_ports port 800         # http</div><div>acl Safe_ports port 8000        # http</div><div>acl Safe_ports port 8080        # http</div><div>acl Safe_ports port 21          # ftp</div><div>acl Safe_ports port 443         # https</div><div>acl Safe_ports port 70          # gopher</div><div>acl Safe_ports port 210         # wais</div><div>acl Safe_ports port 1025-65535  # unregistered ports</div><div>acl Safe_ports port 280         # http-mgmt</div><div>acl Safe_ports port 488         # gss-http</div><div>acl Safe_ports port 591         # filemaker</div><div>acl Safe_ports port 777         # multiling http</div><div>acl SSL method CONNECT</div><div>acl CONNECT method CONNECT</div><div><br></div><div># Only allow cachemgr access from localhost</div><div>http_access allow manager to_localhost</div><div>http_access deny manager</div><div><br></div><div># Deny requests to certain unsafe ports</div><div>http_access deny !Safe_ports</div><div><br></div><div># Deny CONNECT to other than secure SSL ports</div><div>http_access deny CONNECT !SSL_ports</div><div><br></div><div>http_access deny to_localhost</div><div><br></div><div># ICAP CONFIG</div><div>icp_access deny all</div><div>htcp_access deny all</div><div><br></div><div>http_port <a href="http://172.30.0.67:443">172.30.0.67:443</a> ssl-bump cert=/path/to/some.cert.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB tls-dh=/usr/local/squid/etc/dhparam.pem</div><div>https_port <a href="http://172.30.0.67:443">172.30.0.67:443</a> cert=/path/to/other.cert.pem cipher=EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS</div><div>tls_outgoing_options options=NO_SSLv3,SINGLE_DH_USE,SINGLE_ECDH_USE cipher=EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS</div><div><br></div><div>acl step1 at_step SslBump1</div><div>ssl_bump peek step1</div><div>ssl_bump bump all</div><div><br></div><div>access_log stdio:/usr/local/squid/var/log/access.log custom</div><div>cache_store_log stdio:/usr/local/squid/var/log/store.log custom</div><div>log_mime_hdrs on</div><div><br></div><div>pid_filename /usr/local/squid/var/run/custom-squid.pid</div><div><br></div><div># Leave coredumps in the first cache dir</div><div>coredump_dir /usr/local/squid/var/cache</div><div><br></div><div># Add any of your own refresh_pattern entries above these.</div><div>refresh_pattern ^ftp:           1440    20%     10080</div><div>refresh_pattern ^gopher:        1440    0%      1440</div><div>refresh_pattern -i (/cgi-bin/|\?) 0     0%      0</div><div>refresh_pattern .               0       20%     4320</div><div><br></div><div>request_header_access Proxy-Authenticate deny all</div><div>request_header_access Proxy-Authentication-Info deny all</div><div>request_header_access Proxy-Authorization deny all</div><div>request_header_access Proxy-Connection deny all</div><div>request_header_access Proxy-support deny all</div><div>request_header_access custom-version deny all</div><div>request_header_access custom-watermark deny all</div><div>request_header_access custom-token deny all</div><div>request_header_access custom-parent-host deny all</div><div>request_header_access Via deny all</div><div>request_header_access X-Cache deny all</div><div>request_header_access X-Cache-Lookup deny all</div><div>request_header_access X-Forwarded-For deny all</div><div>reply_header_access X-XSS-Protection deny all</div><div>request_header_access Other allow all</div><div><br></div><div>cache_mgr <a href="mailto:cache_mgr@somewhere.com">cache_mgr@somewhere.com</a></div><div>mail_from <a href="mailto:squid@somewhere.com">squid@somewhere.com</a></div><div>icap_enable on</div><div>icap_preview_enable on</div><div>icap_preview_size 1024</div><div>icap_default_options_ttl 60</div><div>icap_persistent_connections on</div><div>icap_send_client_ip on</div><div>icap_send_client_username on</div><div>icap_client_username_header X-Client-Username</div><div>icap_client_username_encode off</div><div><br></div><div>ecap_enable on</div><div>loadable_modules /usr/local/squid/modules/libcustom_ecap.so</div><div>ecap_service custom_validate_req reqmod_precache ecap://<a href="http://somewhere.com/ecap/services/validate">somewhere.com/ecap/services/validate</a> routing=on bypass=off</div><div>ecap_service custom_validate_resp respmod_precache ecap://<a href="http://somewhere.com/ecap/services/validate">somewhere.com/ecap/services/validate</a> routing=on bypass=off</div><div>#adaptation_access custom_validate allow all</div><div><br></div><div>icap_service custom_req reqmod_precache routing=on icap://<a href="http://127.0.0.1:1344/custom_req">127.0.0.1:1344/custom_req</a></div><div>icap_service custom_resp respmod_precache routing=on icap://<a href="http://127.0.0.1:1344/custom_resp">127.0.0.1:1344/custom_resp</a></div><div>forwarded_for delete</div><div><br></div><div># Define a service set for requests. The first service (eCAP) will</div><div># process the request if the API token is in the local cache, and the</div><div># user has the "Access Only" preference set. Otherwise eCAP will abort,</div><div># causing Squid to fail over to ICAP to handle the request.</div><div>adaptation_service_set custom_req_set custom_validate_req custom_req</div><div>adaptation_service_set custom_resp_set custom_validate_resp custom_resp</div><div><br></div><div>adaptation_access custom_req_set allow all</div><div>adaptation_access custom_resp_set allow all</div><div><br></div><div># Never stop trying to talk to the ICAP server, no matter how many times it fails.</div><div>icap_service_failure_limit -1</div><div><br></div><div># Squid uses numeric categories to control logging.</div><div># Interesting categories:</div><div>#   93        ICAP</div><div># debug_options ALL,3 44,0 23,0 40,0 73,0 93,3</div><div>debug_options  ALL,1 11,2 74,9,93,3</div><div>(END)</div></div><div><br></div><div><br></div><div><br></div>------------------------------<wbr>----------<br class="gmail-m_2280393313474431337gmail-Apple-interchange-newline"><div>access.log</div><div>------------------------------<wbr>----------</div><div> [26/May/2017:05:35:50 +0000] "NONE error:invalid-request HTTP/1.1" 400 3824<br class="gmail-m_2280393313474431337gmail-Apple-interchange-newline"></div><div><br></div><div><br></div><div><br></div>------------------------------<wbr>----------<br class="gmail-m_2280393313474431337gmail-Apple-interchange-newline"><div>cache.log</div><div>------------------------------<wbr>----------<br class="gmail-m_2280393313474431337gmail-Apple-interchange-newline"></div><div><div>2017/05/26 05:35:50.115 kid1| 74,9| RequestParser.cc(359) doParse: Parse buf={length=517, data='</div><div>2017/05/26 05:35:50.115 kid1| 74,5| RequestParser.cc(284) parseRequestFirstLine: parsing possible request: buf.length=517</div><div>2017/05/26 05:35:50.115 kid1| 74,9| RequestParser.cc(285) parseRequestFirstLine:</div><div>2017/05/26 05:35:50.115 kid1| 74,5| RequestParser.cc(382) doParse: request-line: retval -1: line={517, data='</div><div>2017/05/26 05:35:50.115 kid1| 74,5| RequestParser.cc(383) doParse: request-line: method: NONE</div><div>2017/05/26 05:35:50.115 kid1| 74,5| RequestParser.cc(384) doParse: request-line: url:</div><div>2017/05/26 05:35:50.115 kid1| 74,5| RequestParser.cc(385) doParse: request-line: proto: NONE/0.0</div><div>2017/05/26 05:35:50.115 kid1| 74,5| RequestParser.cc(386) doParse: Parser: bytes processed=0</div><div>2017/05/26 05:35:50.115 kid1| 11,2| Stream.cc(266) sendStartOfMessage: HTTP Client local=<a href="http://172.30.0.67:443">172.30.0.67:443</a> remote=<a href="http://75.147.129.242:64540">75.147.129.242:64540</a> FD 11 flags=1</div><div>2017/05/26 05:35:50.115 kid1| 11,2| Stream.cc(267) sendStartOfMessage: HTTP Client REPLY:</div><div>---------</div><div>HTTP/1.1 400 Bad Request</div><div>Server: squid/4.0.17</div><div>Mime-Version: 1.0</div><div>Date: Fri, 26 May 2017 05:35:50 GMT</div><div>Content-Type: text/html;charset=utf-8</div><div>Content-Length: 3394</div><div>X-Squid-Error: ERR_PROTOCOL_UNKNOWN 0</div><div>Vary: Accept-Language</div><div>Content-Language: en</div><div>X-Cache: MISS from ip-172-30-0-67.ec2.internal</div><div>X-Cache-Lookup: NONE from ip-172-30-0-67.ec2.internal:443</div><div>Via: 1.1 ip-172-30-0-67.ec2.internal (squid/4.0.17)</div><div>Connection: close</div><div><br></div><div><br></div><div>----------</div></div><div><br></div></div>