bg-tutorials

Как установить SSL-сертификат на Pound

Это руководство показывает вам как установить SSL/TLS-сертификат на Pound, лёгком HTTP/HTTPS reverse proxy. В нём рассматривается часть, которая чаще всего сбивает с толку операторов: создание единого объединённого PEM-файла, который требует Pound, в правильном порядке, а затем написание работающего блока ListenHTTPS, который отключает устаревшие протоколы, указывает Pound на backend и успешно проходит проверку конфигурации перед перезапуском службы.

Небольшое замечание о том, какой Pound имеется в виду в этом руководстве. Оригинальный проект Apsis Pound был прекращён в сентябре 2022 года. Активная разработка перешла к форку, поддерживаемому Сергеем Позняковым по адресу github.com/graygnuorg/pound, который теперь является каноническим upstream-репозиторием и версией, включённой в пакеты современных дистрибутивов Linux. Директивы ниже соответствуют современной серии 4.x.

Создание CSR для Pound

Если вы уже создали CSR и у вас на руках есть выпущенные файлы сертификата, перейдите к разделу Установка SSL-сертификата на Pound.

Прежде чем удостоверяющий центр сможет выпустить ваш сертификат, вам нужно отправить CSR (запрос на подпись сертификата): небольшой текстовый блок, содержащий данные вашего домена и открытый ключ, в паре с закрытым ключом, который остаётся на сервере. У вас есть два варианта:

  • Создать CSR автоматически с помощью нашего генератора CSR. Инструмент возвращает как CSR, так и соответствующий закрытый ключ, который затем нужно перенести на сервер.
  • Создать CSR прямо на сервере с помощью OpenSSL, следуя нашему руководству о том, как создать CSR на Pound. Закрытый ключ остаётся на сервере.

При подаче заявки на сертификат вставьте полный блок CSR, включая строки ——BEGIN CERTIFICATE REQUEST—— и ——END CERTIFICATE REQUEST——. Если вы хотите проверить содержимое CSR перед отправкой, вставьте его в наш декодер CSR. Храните соответствующий файл закрытого ключа (обычно yourdomain.key) в безопасном месте, доступном для чтения только root; он понадобится вам во время установки.

Установка SSL-сертификата на Pound

Когда CA выпустит сертификат, вы обычно получите:

  • Ваш основной (серверный) сертификат, обычно файл .crt или .pem, названный по имени вашего домена.
  • Один или несколько промежуточных сертификатов, либо в виде отдельных файлов, либо объединённых в один файл .ca-bundle.
  • Закрытый ключ (файл .key), который был создан вместе с вашим CSR.

Pound ожидает единый PEM-файл, содержащий сертификат, промежуточную цепочку и незашифрованный закрытый ключ. В руководстве graygnuorg прямо указан порядок: сертификат, затем промежуточные сертификаты (если есть), затем закрытый ключ, именно в таком порядке. Пропуск цепочки — самая распространённая ошибка установки: сертификат нормально работает в настольном браузере, но выдаёт ошибку на Android, на iOS и в клиентах командной строки.

Шаг 1: Создание объединённого PEM-файла

Это руководство предполагает, что файлы сертификата размещены в /etc/pound/. Скорректируйте пути в соответствии со своей структурой. Объедините три файла в один PEM-файл. Приведённая ниже конструкция pipe-to-tee выполняет перенаправление с правами root, что необходимо, поскольку /etc/pound/ обычно доступен для записи только root (обычная команда sudo cat … > /etc/pound/… не сработает, так как shell открывает выходной файл от имени вашего обычного пользователя ещё до запуска sudo):

cat your_domain.crt intermediate.crt your_domain.key | sudo tee /etc/pound/your_domain.pem > /dev/null

Если CA предоставил промежуточные сертификаты в виде одного файла .ca-bundle, используйте его вместо этого:

cat your_domain.crt your_domain.ca-bundle your_domain.key | sudo tee /etc/pound/your_domain.pem > /dev/null

Замените имена файлов на свои собственные. Закрытый ключ внутри объединённого файла должен быть незашифрован, поскольку Pound запускается неинтерактивно и не может запросить парольную фразу. Ограничьте доступ к получившемуся файлу так, чтобы читать его мог только root:

sudo chown root:root /etc/pound/your_domain.pem
sudo chmod 600 /etc/pound/your_domain.pem

Шаг 2: Редактирование pound.cfg

Откройте файл конфигурации Pound (обычно /etc/pound/pound.cfg в Debian и Ubuntu, или /etc/pound.cfg в некоторых других дистрибутивах) и добавьте блок ListenHTTPS, указывающий на объединённый PEM-файл. Минимальный современный блок выглядит так:

ListenHTTPS
    Address 0.0.0.0
    Port 443
    Cert "/etc/pound/your_domain.pem"

    # Modern TLS only: disables SSLv2, SSLv3, TLSv1.0 and TLSv1.1,
    # leaving TLSv1.2 and TLSv1.3 enabled.
    Disable TLSv1_1
    Ciphers "ECDHE+AESGCM:ECDHE+CHACHA20:!aNULL:!MD5:!DSS"

    Service
        Backend
            Address 127.0.0.1
            Port 8080
        End
    End
End

Несколько замечаний по указанным выше директивам:

  • Cert указывает объединённый PEM-файл, который вы создали на шаге 1. В руководстве явно указано, что Cert должен предшествовать всем остальным SSL-специфичным директивам внутри listener, поэтому размещайте его в начале блока.
  • Disable отключает указанный протокол и все более старые протоколы. Таким образом, Disable TLSv1_1 отключает SSLv2, SSLv3, TLSv1.0 и TLSv1.1, оставляя активными TLSv1.2 и TLSv1.3, что соответствует текущим отраслевым рекомендациям.
  • Ciphers задаёт список шифров OpenSSL (используется для TLS 1.2; TLS 1.3 согласует собственные наборы шифров). Список выше ограничивает proxy современными наборами ECDHE с AEAD; если вам нужно поддерживать более старые клиенты, замените его профилем «intermediate» от Mozilla с ssl-config.mozilla.org.
  • Service / Backend — это то место, куда Pound проксирует расшифрованный трафик. В примере трафик перенаправляется на единственный backend на loopback-интерфейсе (порт 8080); замените адрес и порт на те, которые прослушивает ваше приложение, и добавьте больше блоков Backend, если хотите, чтобы Pound выполнял балансировку нагрузки.

Если вы также хотите, чтобы Pound принимал обычный HTTP и перенаправлял его (как правило, только для редиректа на HTTPS, см. шаг 4), добавьте отдельный блок ListenHTTP в том же файле.

Шаг 3: Проверка конфигурации и перезапуск Pound

Перед перезагрузкой службы проверьте файл конфигурации, чтобы опечатка не вывела proxy из строя. У Pound есть встроенный режим проверки:

sudo pound -c -f /etc/pound/pound.cfg

При успехе он завершается со статусом 0 и не выводит ничего, а при неудаче — со статусом 1 и сообщением об ошибке с указанием файла и строки. Добавьте -v, если хотите явное подтверждение «configuration OK». Когда проверка пройдена, перезапустите Pound, чтобы он подхватил новый listener:

sudo systemctl restart pound

В системах без systemd используйте старый init-скрипт:

sudo /etc/init.d/pound restart

Убедитесь, что служба работает и прослушивает порт 443:

sudo systemctl status pound
sudo ss -tlnp | grep ':443'

Шаг 4 (рекомендуется): Перенаправление с HTTP на HTTPS

Чтобы посетители, вводящие домен без протокола, попадали на защищённый URL, добавьте обычный HTTP listener, который отвечает на каждый запрос постоянным редиректом на HTTPS-версию того же пути:

ListenHTTP
    Address 0.0.0.0
    Port 80
    Service
        Redirect 301 "https://example.com$1"
    End
End

Замените example.com на свой домен. Обратная ссылка $1 сохраняет исходный путь запроса. Снова запустите sudo pound -c -f /etc/pound/pound.cfg, затем перезапустите службу.

Проверка установки SSL

Откройте ваш сайт по https:// в браузере и убедитесь, что замок закрыт, а сертификат соответствует вашему домену. Затем выполните более глубокую проверку с помощью нашего SSL Checker, чтобы получить мгновенный отчёт о сертификате, цепочке, а также о протоколах и шифрах, которые предлагает Pound. Чистый результат означает, что клиенты на всех основных платформах, включая мобильные и API-клиенты, будут доверять сертификату.

Часто задаваемые вопросы

Какой Pound следует установить?

Оригинальный проект Apsis был заброшен в 2022 году. Активно поддерживаемый форк — graygnuorg/pound Сергея Позднякова, сейчас находится в серии 4.x, и именно его основные дистрибутивы Linux упаковывают как pound. Если вы используете что-либо из старой линии 2.x, планируйте переход на актуальный релиз: директивы конфигурации в этом руководстве рассчитаны на современный форк.

В каком порядке в PEM-файле должны идти сертификат, цепочка и ключ?

Согласно руководству Pound: сначала серверный сертификат, затем промежуточные сертификаты (если есть), затем закрытый ключ — всё в кодировке PEM, в одном файле. Закрытый ключ не должен быть защищён парольной фразой, поскольку Pound запускается как демон и не может запросить её.

Как отключить старые версии TLS в Pound?

Используйте директиву Disable внутри блока ListenHTTPS. Директива Disable в Pound отключает указанный протокол и все более старые протоколы, поэтому Disable TLSv1_1 отключает SSLv2, SSLv3, TLSv1.0 и TLSv1.1, оставляя только TLSv1.2 и TLSv1.3. Это рекомендуемая настройка для новых внедрений.

Можно ли размещать более одного HTTPS-сайта на одном экземпляре Pound?

Да. Pound поддерживает SNI, поэтому вы можете объявить несколько операторов Cert внутри одного listener ListenHTTPS (или указать Cert на каталог с PEM-файлами). Pound проходит по сертификатам по порядку и использует первый, чьё Common Name или SAN совпадает с запрошенным именем хоста, поэтому более конкретные сертификаты (имена хостов) следует указывать перед wildcard-сертификатами.

Как проверить конфигурацию Pound без перезапуска?

Выполните sudo pound -c -f /etc/pound/pound.cfg. Флаг -c проверяет файл конфигурации на синтаксические ошибки и завершает работу без запуска proxy; код завершения 0 означает успех, код 1 означает наличие ошибки (в сообщении указывается файл и строка). Добавьте -v, чтобы получить явное сообщение об успехе.

Как часто нужно обновлять сертификат?

С 15 марта 2026 года максимальный срок действия публично доверенных SSL/TLS-сертификатов ограничен 200 днями, и CA/Browser Forum запланировал дальнейшие сокращения (до 100 дней в 2027 году и 47 дней в 2029 году). Планируйте повторение установки, описанной выше, задолго до каждого истечения срока действия, либо автоматизируйте продление с помощью ACME.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.