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

Haproxy: бэкэнд с шифрованием SSL с самоподписанным сертификатом

Я работаю над настройкой HAProxy таким образом, чтобы он отключал SSL, поэтому есть только одно место для настройки приобретенного сертификата SSL. Однако я бы предпочел, чтобы соединение с внутренними серверами также было зашифровано с помощью SSL.

Одно из предложенных мной предложений - создать самозаверяющие сертификаты на внутренних серверах, а затем в каждой строке сервера установить «не проверять». ... Таким образом, соединение браузера с HAProxy будет использовать приобретенный официальный сертификат SSL, а подключение к HAProxy к внутренним серверам будет использовать самозаверяющие сертификаты. Преимущество самозаверяющих сертификатов заключается в том, что они бесплатны, они не требуют обновлений и обслуживания (я могу установить срок действия в отдаленном будущем и избежать необходимости устанавливать новые каждый год). Однако понятно, что это открывает бэкэнд для атак MITM и не рекомендуется некоторыми источниками, которые я читал.

Могу ли я настроить HAProxy так, чтобы я мог использовать самозаверяющие сертификаты на внутренних серверах, но, возможно, каким-то образом занести самозаверяющий сертификат в белый список на сервере HAProxy? ... таким образом, соединение HAProxy с бэкэнд будет зашифровано, оно не будет уязвимо для атак MITM, и HAProxy будет знать, что он доверяет самозаверяющему сертификату с бэкэнд-серверов.

Возможно ли то, что я описываю? Я новичок в прерывании SSL HAProxy, поэтому приветствую любые советы.

Соответствующие части моей конфигурации следующие:

frontend www-in
    bind *:80
    bind *:443 ssl crt /etc/ssl-keys/my-public-ssl-key.pem no-sslv3

    mode http
    default_backend https-backend
    # force redirect to https
    redirect scheme https if !{ ssl_fc }

backend https-backend
    balance leastconn
    server web1 1.1.1.1:443 check ssl verify none
    server web2 2.2.2.2:443 check ssl verify none

    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }

Вопрос на самом деле не связан с HAProxy, но для управления сертификатами и центрами сертификации в целом.

Не уверен, какую ОС вы используете, потому что вы этого не указали, но если это какой-то вариант Linux (хотя следующее относится к Debian и производные):

  • Убедитесь, что у вас есть посылка ca-certificates установлены.

  • Вы создаете свои сертификаты, используя свои собственные центр сертификации (ок).

  • Возьми your ca root cert этого CA и положите его внутрь /usr/local/share/ca-certificates/name-of-your-ca/. (Возможно, вам придется создать папку name-of-your-ca самостоятельно.) Убедитесь, что your ca root cert имеет .crt расширение.

    (По умолчанию, /usr/local/share/ca-certificates/ принадлежит root:staff, так что используйте sudo или root сделать это.)

  • Выполнить update-ca-certificates (через sudo / так как root).

  • После исполнения должен быть файл /etc/ssl/cert/your-ca-root.pem символическая ссылка на /usr/local/share/ca-certificates/name-of-your-ca/your-ca-root.crt.

  • Включить проверку в HAProxy и прибыль.