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

Не удается подключиться к HTTPS-сайтам через прокси-сервер Squid

Я только что попытался создать прокси-сервер на OpenVZ VPS в CentOS7. Все хорошо, но я не могу получить доступ к https-сайтам, таким как google, instagram, facebook и т. Д., Он говорит, что тайм-аут, на ответ потребовалось слишком много времени.

Я создал сертификат myCA.pem и с помощью ssl_bump связал подписанный сертификат без ошибок (проверено с помощью systemctl status squid), и теперь, когда я пытаюсь подключиться к перечисленным выше веб-сайтам, это не дает мне ошибки в Интернете:

Ниже мой squid.conf и вот мой cache.log http://pastebin.com/MUkujTig

acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl SSL_ports port 443
acl Safe_ports port 80        # http
acl Safe_ports port 21        # ftp
acl Safe_ports port 443        # https
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 CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow all
http_port 3128 ssl-bump \
 generate-host-certificates=on \
 dynamic_cert_mem_cache_size=4MB \
 key=/etc/squid/ssl_cert/myCA.pem \
 cert=/etc/squid/ssl_cert/myCA.pem

# SSL Bump Config
always_direct allow all
ssl_bump server-first all
sslproxy_cert_error deny all
sslproxy_flags DONT_VERIFY_PEER
sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB    sslcrtd_children 8 startup=1 idle=1

hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
cache deny all

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

icp_port 3130

forwarded_for off

request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all

Я добавил порт 3128 в публичную зону, используя firewall-cmd

Для моей цели не нужно использовать sslbump, поэтому я удалил его и решил, добавив эту строку в squid.conf dns_v4_first on

В вашем журнале есть такая строка:

 (ssl_crtd): Failed to initialize /var/lib/ssl_db/index.txt file for writing

Это означает, что у вас есть ошибки в конфигурации sslbump.

Проблема с вашей конфигурацией в том, что вы не можете /var/lib/ssl_db в качестве хранилища sslbump, так как вы не сможете инициализировать его с помощью следующей команды /usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db. В ssl_db dir не должен существовать до того, как вы введете команду, иначе она завершится ошибкой. Но squid пользователь не может создать каталог в /var/lib из-за разрешений. Поэтому вам нужно изменить этот каталог на /var/lib/squid/ssl_db выполнив следующие команды (начните как root!):

  1. sudo su (или любое другое средство для получения корневой оболочки)
  2. mkdir /var/lib/squid/
  3. chown -R squid:squid /var/lib/squid/
  4. su -l squid -s /bin/bash (следующая команда должна быть запущена как squid user, поэтому этот шаг важен)
  5. /usr/lib64/squid/ssl_crtd -c -s /var/lib/squid/ssl_db

Если вы добились успеха, вывод должен отображаться:

 Initialization SSL db...
 Done

Теперь вы измените свой squid.conf на новый каталог ssl_db:

sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/squid/ssl_db -M 4MB

И эта директива должна начинаться с новой строки, у вас есть ошибка в вашем конфигурационном файле:

sslcrtd_children 8 startup=1 idle=1

Надеюсь, это поможет (если вы не вводите цензуру, я надеюсь, что это не так :))!

P.S. Это не ваш случай, но все же добавлю:

Место разных дистрибутивов ssl_crtd в разные каталоги, но у людей появилась тенденция копировать файлы конфигурации без предварительной проверки их существования. Запуск /usr/lib64/squid/ssl_crtd так как squid пользователь должен отображать:

Uninitialized SSL certificate database directory: . To initialize, run "ssl_crtd -c -s ".

Если он говорит, что command not found, затем ssl_crtd может фактически находиться в /usr/libexec/squid/ssl_crtd

P.P.S. После двухчасового сеанса скайпа попыток исправить неисправимое решение было найдено - отключение ipv6, неправильно настроенного хостинг-провайдером :)

Кто бы мог подумать, что все это распадется на следующие команды:

 sysctl -w net.ipv6.conf.all.disable_ipv6=1
 sysctl -w net.ipv6.conf.default.disable_ipv6=1
 sysctl -w net.ipv6.conf.lo.disable_ipv6=1

И добавляем:

 dns_v4_first on

в squid.conf