[[ How-To Squid dynamic SSL на Ubuntu Server 20.04 ]]

UbuntuSquid

How-To Squid dynamic SSL на Ubuntu Server 20.04

Ubuntu 20.04
Squid Cache: Version 4.10



Теория

https://wiki.squid-cache.org/Features/DynamicSslCert
Для контроля HTTPS трафика, Squid'y нужно перехватывать SSL соединение.
Squid будет генерировать самоподписанный сертификат на лету, для посещаемого сайта и подставлять его для клиента.



Сборка Squid

Сборка Squid с поддержкой dynamic ssl.

«Из коробки» этой поддержки нету, поэтому можно увидеть ошибку:

FATAL: Bungled /etc/squid/squid.conf line 30: http_port 3128 ssl-bump

Подключение репозитория с исходными кодами

/etc/apt/sources.list

deb-src http://ru.archive.ubuntu.com/ubuntu/ focal main restricted

Необходимые утилиты

apt-get update
apt-get install devscripts build-essential fakeroot libssl-dev

Установка исходных кодов

mkdir /usr/src/squid
chown _apt:root /usr/src/squid
cd /usr/src/squid
 
apt-get source squid
# Пакеты, необходимые для компиляции
apt-get build-dep squid

Добавить поддержку SSL Bump и генерации сертификатов.

/usr/src/squid/squid-4.10/debian/rules

...

                --with-default-user=proxy \
-               --with-gnutls
+               --with-gnutls \
+               --enable-ssl \
+               --enable-ssl-crtd \
+               --with-openssl

...

Сборка пакетов

cd /usr/src/squid/squid-4.10
debuild -d

Now signing changes and any dsc files...
 signfile dsc squid_4.10-1ubuntu1.dsc Andreas Hasenack <andreas@canonical.com>
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: skipped "Andreas Hasenack <andreas@canonical.com>": No secret key
gpg: /tmp/debsign.YiTaKCMO/squid_4.10-1ubuntu1.dsc: clear-sign failed: No secret key
debsign: gpg error occurred!  Aborting....
debuild: fatal error at line 1112:
running debsign failed

Такая ошибка это нормально, у нас нет закрытого ключа разработчика.



Установка

cd /usr/src/squid
dpkg -i squid_4.10-1ubuntu1_amd64.deb squid-common_4.10-1ubuntu1_all.deb squidclient_4.10-1ubuntu1_amd64.deb
 
# Доставим зависимости
apt-get --fix-broken install
 
# Фиксируем
apt-mark hold squid squidclient squid-common

Остановка

systemctl status squid
systemctl stop squid

Настройка

mkdir /etc/squid/ssl
chmod 700 /etc/squid/ssl

Генерируем корневой сертификат собственного CA (Центра сертификации), на основе которого будут подписываться сертификаты для сайтов:

openssl genrsa -out /etc/squid/ssl/squid.key
openssl req -new -key /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.csr
openssl x509 -req -days 999 -in /etc/squid/ssl/squid.csr -signkey /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.pem

Генерируем корневой сертификат который затем нужно будет добавить в браузер:

openssl x509 -in /etc/squid/ssl/squid.pem -outform DER -out /etc/squid/ssl/squid.der

/etc/squid/squid.conf

+ dns_v4_first on  # опционально
- http_port 3128
+ http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=8MB cert=/etc/squid/ssl/squid.pem key=/etc/squid/ssl/squid.key

# sslproxy_flags DONT_VERIFY_PEER
+ sslproxy_cert_error allow all
+ always_direct allow all

+ ssl_bump client-first all
+ ssl_bump server-first all
+ ssl_bump none all
+ sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/spool/squid/ssl_db -M 4MB

Проверка

squid -k parse; echo $?

Старт

systemctl start squid;
systemctl status squid;






Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
29 +15 =
 
howto/ubuntu/ubuntu14.04_squid_ssl.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki