Это руководство показывает вам как установить 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-клиенты, будут доверять сертификату.
Часто задаваемые вопросы
Оригинальный проект Apsis был заброшен в 2022 году. Активно поддерживаемый форк — graygnuorg/pound Сергея Позднякова, сейчас находится в серии 4.x, и именно его основные дистрибутивы Linux упаковывают как pound. Если вы используете что-либо из старой линии 2.x, планируйте переход на актуальный релиз: директивы конфигурации в этом руководстве рассчитаны на современный форк.
Согласно руководству Pound: сначала серверный сертификат, затем промежуточные сертификаты (если есть), затем закрытый ключ — всё в кодировке PEM, в одном файле. Закрытый ключ не должен быть защищён парольной фразой, поскольку Pound запускается как демон и не может запросить её.
Используйте директиву Disable внутри блока ListenHTTPS. Директива Disable в Pound отключает указанный протокол и все более старые протоколы, поэтому Disable TLSv1_1 отключает SSLv2, SSLv3, TLSv1.0 и TLSv1.1, оставляя только TLSv1.2 и TLSv1.3. Это рекомендуемая настройка для новых внедрений.
Да. Pound поддерживает SNI, поэтому вы можете объявить несколько операторов Cert внутри одного listener ListenHTTPS (или указать Cert на каталог с PEM-файлами). Pound проходит по сертификатам по порядку и использует первый, чьё Common Name или SAN совпадает с запрошенным именем хоста, поэтому более конкретные сертификаты (имена хостов) следует указывать перед wildcard-сертификатами.
Выполните 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


