Назад | Перейти на главную страницу

Невозможно получить доступ к зашифрованному SSL сайту MAMP через локальную сеть с помощью прокси-сервера Squid (сайты без SSL работают нормально)

У меня есть сайт разработки, работающий на хост-машине (Mac OS X) в MAMP, который я хочу просмотреть на клиентском компьютере (а также на мобильных устройствах - все Mac OS). Все подключены к одной локальной сети (Wi-Fi). Я успешно настроил прокси-сервер Squid на хосте и могу просматривать HTTP-хосты на клиенте в обычных браузерах. Но у меня проблемы с просмотром файлов, зашифрованных SSL. Важно использовать SSL в среде разработки, потому что я использую его в производственной среде. Надеюсь, кто-нибудь поможет мне разобраться, как с этим работать! Заранее спасибо.

Я захожу на сайт на хосте, используя https://www.mydomain.dev:8899. Там он отлично работает во всех браузерах. Локальные IP-адреса: хост 192.168.0.99, клиент 192.168.0.98.

Я установил небольшой тестовый виртуальный хост в MAMP, используя адрес http://test.dev:8898без SSL-шифрования (просто перечисляет папку). Я могу получить к нему доступ на хост-машине, набрав http://test.dev:8898 в браузер. Я создал следующие .pac файл и настроил клиентский компьютер для использования его для настройки прокси:

function FindProxyForURL(url, host) {
  if (shExpMatch(url, "http://test.dev*")) {
    return "PROXY 192.168.0.99:3128; DIRECT";
  }
  return "DIRECT";
}

Когда я запустил Squid, с конфигурацией squid, показанной ниже, я действительно мог получить доступ http://test.dev:8898 на клиентской машине во всех браузерах, как и на хосте. Отлично. Теперь я настроил следующие .pac файл для сайта разработчиков:

function FindProxyForURL(url, host) {
  if (shExpMatch(url, "https://www.mydomain.dev*")) {
    return "PROXY 192.168.0.99:3128; DIRECT";
  }
  return "DIRECT";
}

Но мне не удалось подключиться к https://www.mydomain.dev:8899 на клиентской машине, получив ERR_CONNECTION_REFUSED в Chrome и «Невозможно подключиться» в Firefox (очень быстрый ответ в обоих случаях, без заметной задержки).

В access.log выглядит так для обоих запросов:

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

Также есть странная ошибка в cache.log что говорит:

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'.

Вот результат curl:

→ 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

Я пробовал добавить строку https_port 3130 transparent под чертой http_port 3128 transparent, а затем использовал .pac файл для перенаправления на 192.168.0.99:3130, но это не сработало. Браузер просто зависает в ожидании соединения и в конце концов сообщает, что соединение было отклонено.

Надеюсь, кто-то будет знать, что означают эти ошибки, и что я делаю не так! Большое спасибо за ваше время.


Вот мой 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