http-webhook-certificate

<acct-file>

Клиентский сертификат, которым узел представляется приёмнику
в конфигурации это строкаhttp-webhook-certificateвнутри блока <acct-file>
Второй способ доказать, что пачка от нужного узла

Файл в формате PEM с клиентским сертификатом. Узел предъявит его приёмнику, если тот запросит. Умолчания нет.

Это альтернатива токену в заголовке. Приёмнику надо как-то отличать свои узлы от чужих, и способов два: секрет в заголовке (http-webhook-extra-headers) или сертификат. Второй тяжелее в обслуживании — сертификаты истекают, — но не передаётся в каждом запросе и не лежит в файле открытым текстом.

Строка ничего не требует. Если приёмник сертификата не просит, она просто не сработает — и это тихо: ошибки не будет, авторизации тоже.

Главная ловушка — забыть про срок действия. Истёкший сертификат означает отказ приёмника, повтор и накопление промежуточных файлов — ровно тот же симптом, что у всех прочих неисправностей вебхука. В день истечения телеметрия просто перестанет приходить.
Что делает Хаб. Не пишет: узлы представляются токеном в заголовке. Токен на 48 знаков выдаётся при первом применении конфигурации и хранится у нас; истечения у него нет, а отзыв — это перезапись одного файла на узле.
Рекомендуемые значения

Выбор между двумя способами доказательства:

Способ Плюс Минус
токен в заголовке нечему истекать, отзыв — один файл секрет уходит в каждом запросе
клиентский сертификат секрет не передаётся истекает, нужен выпуск и обновление

Вместе они не нужны, хотя и не мешают друг другу.

Формат PEM и условие «если запросит» — из руководства (§ 3.3.11.19). Сравнение двух способов доказательства и предупреждение про истечение — наши.
Пример в конфигурации
# приёмник требует клиентский сертификат вместо токена
<acct-file /var/log/pmta/webhook.json>
    http-webhook-url https://partner.example.com/ingest
    http-webhook-certificate /etc/pmta/webhook1-client-cert.pem</acct-file>
Срок действия сертификата стоит держать в том же списке, где сроки сертификатов приёма почты: истечение выглядит как поломка вебхука.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается2 ошибки▶

Задают сертификат приёмнику, который его не просит

наш опыт

Чем чреватоСтрока не сработает, и авторизации не будет. Ошибки при этом нет — приёмник просто откажет по своей причине, а выглядеть это будет как накопление файлов.
Как заметитьСертификат задан, приёмник отвечает 401.
Как правильноПроверить, запрашивает ли приёмник сертификат; если нет — пользоваться токеном в заголовке.

Не следят за сроком действия

наш опыт

Чем чреватоВ день истечения телеметрия перестаёт приходить, а симптом тот же самый, что у всех прочих неисправностей вебхука, — копятся файлы.
Как заметитьДанные пропали в один день без правок конфигурации.
Как правильноДержать срок в общем списке сроков сертификатов узла.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
http-webhook-certificate <path>
Значения
путь к файлу PEM с клиентским сертификатом
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<acct-file>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка живёт внутри своего <acct-file> и действует на соединения только его приёмника. Разным приёмникам — разные сертификаты.
Как проверить на узле
Сначала стоит узнать, просит ли приёмник сертификат вообще:
openssl s_client -connect HOST:443 -msg </dev/null | grep -c CertificateRequest
0 означает, что не просит, и строка не сработает. Срок действия своего сертификата смотрят так: openssl x509 -enddate -noout -in ФАЙЛ.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Собрать телеметрию