Мне нужна помощь в настройке ssl-соединения с самозаверяющим сертификатом между Haproxy и Squid. В моем случае Haproxy (192.168.10.110) — это фронтэнд, а SQUID (192.168.10.149) — это бэкэнд. Без самоподписанного сертификата работает отлично. Но мне нужно установить безопасное соединение между интерфейсом и сервером, чтобы предотвратить атаку «Человек посередине».
Итак, я создал самозаверяющий сертификат на бэкэнде (SQUID). Я генерирую 4 файла на бэкэнде: squid1.pem, squid1.crt, squid1.key, squid1.csr. После этого копирую squid1.pem на фронтенд, указал на него в конфиге Haproxy (в разделе backend). Но это не работает...
Проверяю работу Haproxy по curl request на Haproxy:
завиток https://ifconfig.io -v --прокси 192.168.10.110:4483
- Пытаюсь 192.168.10.110:1383...
- Подключен к порту 192.168.10.110 (192.168.10.110) 4483 (#0)
- выделить буфер подключения!
- Установите туннель HTTP-прокси для ifconfig.io:443.
*> ПОДКЛЮЧИТЬ ifconfig.io:443 HTTP/1.1
*> Хост: ifconfig.io:443
*> Агент пользователя: curl/7.77.0
*> Прокси-соединение: Keep-Alive
*>
- Прокси CONNECT прерван
- Этап ПОДКЛЮЧЕНИЯ завершен!
- Закрытие соединения 0
curl: (56) Прокси CONNECT прерван
Файл конфигурации Haproxy:
Глобальный
журнал 127.0.0.1 локальный0
журнал 127.0.0.1 локальный1 уведомление
максконн 4096
демон по умолчанию
журнал глобальный
опция
повторяет 3
опция повторной отправки
максконн 2000
тайм-аут клиента 30 сек.
тайм-аут сервера 30 секунд
тайм-аут соединения 30 сек.
значения по умолчанию
интерфейс Frontend4483
привязать 192.168.10.110:4483
режим TCP
default_backend 4483
серверная часть 4483
режим TCP
круговой баланс
опция tcplog
сервер B1S1 192.168.10.149:4128 ssl ca-файл /etc/ssl/private/squid1.pem
Файл конфигурации SQUID:
acl локальная сеть src 192.168.10.110/32
acl SSL_ports порт 443
acl Safe_ports порт 80 # http
acl Safe_ports порт 443 # https
acl Safe_ports port 1025-65535 # незарегистрированные порты
acl метод CONNECT CONNECT
http_access разрешить диспетчеру локального хоста
http_access менеджер запрета доступа
http_access разрешить локальную сеть
http_access разрешить локальный хост
http_access запретить всем
http_порт 192.168.10.149:4128
В бэкенде tcpdump скажите:
kG......HTTP/1.1 400 Неверный запрос
Сервер: кальмар/4.15
Mime-версия: 1.0
Дата: вторник, 20 июля 2021 г., 13:57:36 по Гринвичу
Тип содержимого: текст/html; кодировка = utf-8
Длина контента: 3328
X-Squid-Ошибка: ERR_PROTOCOL_UNKNOWN 0
Варьировать: Accept-Language
Язык содержания: en
X-Cache: MISS от локального хоста
X-Cache-Lookup: NONE с локального хоста: 4128
Через: 1.1 локальный хост (squid/4.15)
Подключение: закрыть
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><заголовок>
У меня есть 2 вопроса:
Что я делаю не так, как исправить?
Могу ли я сгенерировать самозаверяющий сертификат на Haproxy и скопировать его на каждый бэкэнд (прокси SQUID)?