Eu tenho um site de desenvolvimento em execução em uma máquina host (mac os x) no MAMP que eu quero ver em uma máquina cliente (e também em dispositivos móveis - todos os mac os). Todos estão conectados à mesma LAN (wifi). Eu configurei com sucesso um proxy do Squid no host e posso visualizar hosts HTTP no cliente em navegadores regulares. Mas estou tendo problemas para visualizar os criptografados por SSL. É importante usar SSL no ambiente de desenvolvimento porque estou usando isso na produção. Espero que alguém possa me ajudar a descobrir como trabalhar isso! Agradecemos antecipadamente.
Eu acesso o site no host usando https://www.mydomain.dev:8899
. Ele funciona perfeitamente em todos os navegadores. Os IPs locais: host 192.168.0.99
, cliente 192.168.0.98
.
Eu configurei um pequeno host virtual de teste no MAMP usando o endereço http://test.dev:8898
, sem criptografia SSL (ele apenas lista uma pasta). Eu posso acessá-lo na máquina host digitando http://test.dev:8898
no navegador. Eu criei o seguinte arquivo .pac
e configurei a máquina cliente para usá-lo para configuração de proxy:
function FindProxyForURL(url, host) {
if (shExpMatch(url, "http://test.dev*")) {
return "PROXY 192.168.0.99:3128; DIRECT";
}
return "DIRECT";
}
Quando eu iniciei o Squid, com a configuração do squid mostrada abaixo, eu poderia acessar http://test.dev:8898
na máquina cliente em todos os navegadores, assim como no host. Ótimo. Agora eu configurei o seguinte arquivo .pac
para o site dev:
function FindProxyForURL(url, host) {
if (shExpMatch(url, "https://www.mydomain.dev*")) {
return "PROXY 192.168.0.99:3128; DIRECT";
}
return "DIRECT";
}
Mas não consegui me conectar a https://www.mydomain.dev:8899
na máquina do cliente, obtendo ERR_CONNECTION_REFUSED
no Chrome e 'Unable to Connect' no Firefox (uma resposta muito rápida em ambos os casos, sem latência perceptível).
O access.log
se parece com isso para os dois pedidos:
1486685792.999 58 192.168.0.98 TCP_MISS/200 1258 GET http://test.dev:8898/ - HIER_DIRECT/192.168.0.99 text/html
1486685793.556 1 192.168.0.98 TCP_MISS/404 443 GET http://test.dev:8898/favicon.ico - HIER_DIRECT/192.168.0.99 text/html
1486685797.211 1 192.168.0.98 TCP_DENIED/403 3992 CONNECT www.mydomain.dev:8899 - HIER_NONE/- text/html
1486685797.213 0 192.168.0.98 TCP_DENIED/403 3992 CONNECT www.mydomain.dev:8899 - HIER_NONE/- text/html
Há também um erro estranho em cache.log
que diz:
2017/02/09 09:09:42 kid1| WARNING: 'Name-of-host-machine' rDNS test failed: (0) No error.
2017/02/09 09:09:42 kid1| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.
Aqui está a saída de curvas:
→ curl -v --proxy 192.168.0.99:3128 https://www.mydomain.dev:8899
* Rebuilt URL to: https://www.mydomain.dev:8899/
* Hostname was NOT found in DNS cache
* Trying 192.168.0.99...
* Connected to 192.168.0.99 (192.168.0.99) port 3128 (#0)
* Establish HTTP proxy tunnel to www.mydomain.dev:8899
> CONNECT www.mydomain.dev:8899 HTTP/1.1
> Host: www.mydomain.dev:8899
> User-Agent: curl/7.37.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 403 Forbidden
< Server: squid/3.5.23
< Mime-Version: 1.0
< Date: Fri, 10 Feb 2017 01:54:06 GMT
< Content-Type: text/html;charset=utf-8
< Content-Length: 3516
< X-Squid-Error: ERR_ACCESS_DENIED 0
< Vary: Accept-Language
< Content-Language: en
< X-Cache: MISS from localhost
< Via: 1.1 localhost (squid/3.5.23)
< Connection: keep-alive
<
* Received HTTP code 403 from proxy after CONNECT
* Connection #0 to host 192.168.0.99 left intact
curl: (56) Received HTTP code 403 from proxy after CONNECT
Eu tentei adicionar a linha https_port 3130 transparent
na linha http_port 3128 transparent
e usei o arquivo .pac
para redirecionar para 192.168.0.99:3130
, mas isso não funcionou. O navegador simplesmente trava esperando por uma conexão e, eventualmente, diz que a conexão foi recusada.
Esperando que alguém saiba o que esses erros significam e o que estou fazendo de errado! Muito obrigado pelo seu tempo.
Este é o meu arquivo squid.conf
:
acl localnet src 192.168.0.0/24 # local subnet
acl SSL_ports port 443 8899
acl Safe_ports port 8899
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 8898 # testdev site
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128 transparent
coredump_dir /usr/local/var/cache/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320