Проблемы с проверкой конфигурации rsyslog.conf

Ваше сообщение явно является попыткой очистить сообщение S/MIME -подписанное (, также известное как сообщение с отдельной подписью ), см. rfc5751 sec 3.4.3 et pred, хотя на самом деле это неверно. ; первая часть, представляющая собой объект данных, не имеет заголовков MIME.

Некоторое программное обеспечение, включая OpenSSL, может справиться с этим отклонением, но OpenSSL (по-прежнему! )создает отдельные подписи с подтипом x-pkcs7-signatureиз v2 (rfc2311 ), а не pkcs7-signatureиз более новых версий, как в вашем сообщении.

Отсоединенная подпись PKCS7/CMS, используемая в этом типе сообщения S/MIME, имеет несколько необязательных компонентов, которые могут использоваться или нет. Из усеченных данных, которые вы показываете, невозможно определить, какие параметры используются в этом сообщении, и в любом случае вы не указываете, так или иначе вы заботитесь об этих параметрах.

What is the command to generate it ?

С OpenSSLopenssl smime -sign -sha256 -signer $certfile [-inkey $keyfile]без-nodetachсоздает сообщение в этом формате, за исключением того, что я отметил выше, используя более старый подтип с x-. Параметр -inkeyможно опустить, если закрытый ключ включен в тот же файл, что и сертификат. Вы можете опционально:

  • включать или не включать сертификат подписавшего

  • явно включать дополнительный (цепочку )сертификат (с)

  • использовать атрибуты signedAttributes или нет, как описано на справочной странице вашей системы или в Интернете . Вы можете вводить и выводить в именованные файлы или использовать stdin и stdout, которые, в свою очередь, могут быть перенаправлены или переданы оболочкой (или ОС ).

    За исключением очень старых версий OpenSSL (0.9.8 или ниже ), вы также можете использовать openssl cms, который на самом деле является надмножеством openssl smimeи, несмотря на его название, по умолчанию выполняет S /MIME --чтобы получить илиopenssl smimeилиopenssl cmsдля выполнения CMS, вы должны указать -outformдля подписи или шифрования или -informдля проверки или расшифровки!

Команда smime verifyв вашем Q проверяет подпись S/MIME (и по умолчанию применимую цепочку сертификатов, но похоже, что вы используете автономный сертификат, и, следовательно, нет реальной цепочки )и затем отбрасывает его, выводя только подписанные данные, которые в вашем случае представляют собой XML.

Внешний тегможет означать, что эти данные предназначены для представления синтаксиса криптографических сообщений, преемника PKCS7 (rfc5652 et pred ), но эта комбинация данных не соответствует какому-либо сообщению CMS.. Названия предполагают, что он содержит хеш-значение для определенного файла; если у вас есть (предполагаемая )копия этого файла и вы хотите сверить хэш с файлом, OpenSSL не может сделать это автоматически (и даже проверку, выполняемую обычными командами Unix {md5,sha1,etc}sum -cс использованием более простого объявления -текстовый формат hoc ). Чтобы проверить вручную, ваша вторая команда является правильным запуском; чтобы извлечь хэш из XML, вы можете сделать что-то вроде

 $ grep -Po '\K[^<]*' 

или, если у вас нет grep с PCRE, есть эквиваленты с sed awk perl, почти наверняка охваченные другими вопросами здесь; а затем сравните два хеш-значения с помощью оболочки test "$x" == "$y"или [ "$x" == "$y" ], или bash,ksh,zsh [[, или awk, или perl, или другими методами.

OTOH, если ваша проблема на самом деле в создании тела XML, OpenSSL может обрабатывать только хэш-значение; остальным придется использовать стандартные текстовые инструменты или, возможно, инструменты XML.

2
11.08.2020, 11:09
2 ответа

Я думаю, что RebindInterbal — это действие, не являющееся частью загрузки модуля -, поэтому в rsyslogd.conf формат должен быть:

module(load="builtin:omfwd")
action(type="omfwd" RebindInterval="5000")
1
18.03.2021, 23:13

Модуль имеет 2 вида параметров. Некоторые из них должны использоваться только с объектом module(), а некоторые — с объектом action(), относящимся к этому модулю. Посмотрите на определение RebindIntervalв цитируемой документации, и вы увидите, что оно находится под заголовком Параметры действия , а не Параметры модуля , поэтому вы можете использовать его только с

action(type="omfwd" RebindInterval=...)

Кроме того, include()недоступен до версии 8.33, поэтому используйте устаревшую

$IncludeConfig /etc/rsyslog.d/*.conf
4
18.03.2021, 23:13

Теги

Похожие вопросы