Цепочка сертификатов, содержащаяся в открытом ключе, предоставляемом RabbitMQ - PullRequest
0 голосов
/ 07 июня 2018

У меня есть клиент ac # .net, потребляющий сообщения из экземпляра RabbitMQ (используя RabbitMQ.Client), защищенный с помощью TLS.У меня все отлично работает, используя самозаверяющий сертификат.

Мы купили сертификат с подстановочными знаками в аккредитованном центре сертификации, чтобы использовать его в дальнейшем.Этот сертификат фактически был подписан промежуточным органом корневого ЦС, которому доверяет сам корневой ЦС.

Поскольку промежуточный ЦС не будет доверен клиентской машине (сертификат не будет установлен вхранилище сертификатов локальной машины), мы загрузили файл PEM, который содержит все сертификаты, составляющие цепочку доверия.Однако клиент .net не будет проверять этот сертификат, потому что он не может установить цепочку доверия.

Я осмотрелся и не могу найти ничего, что говорит, что .net не может проверять сертификаты PEM, которые сами содержатнесколько сертификатов.Если я назначу пользовательский делегат свойству CertificateValidationCallback RabbitMQ ConnectionFactory, я вижу, что цепочка сертификатов содержит только один сертификат, который является сертификатом, подписанным промежуточным CA.

Клиент в конечном итоге будет развернутк сотням машин, поэтому нам не нужно было бы развертывать промежуточный сертификат на всех из них, а затем управлять ими в будущем.Я знаю, что могу отключить проверку цепочки, установив для свойства AcceptablePolicyErrors значение SslPolicyErrors.RemoteCertificateChainErrors, но мне кажется, что это делает вещи немного менее безопасными.

Итак, у меня есть два основных вопросаздесь:

  1. Может ли криптографическая проверка .net просто не поддерживать сертификаты, которые содержат все другие сертификаты в цепочке (по крайней мере, если этот сертификат является PEM)?
  2. Есть ли способработать вокруг этого?

Я использую .net 4.5.2, хотя та же проблема возникает в .net 4.6.2 и .net 4.7.1.

Язапустить его на компьютере с Windows 7.Узел RabbitMQ работает на сервере Windows 2012.

1 Ответ

0 голосов
/ 09 июня 2018

Команда RabbitMQ отслеживает список рассылки rabbitmq-users] (https://groups.google.com/forum/#!forum/rabbitmq-users) и только иногда отвечает на вопросы по StackOverflow.


Необходимо объединить сертификат корневого ЦС и сертификат промежуточного ЦС (и pem формат) в один файл, и используйте его в качестве cacertfile для RabbitMQ. Виртуальная машина Erlang должна представить оба сертификата на этапе установления сеанса рукопожатия, и они должны использоваться кодом .NET TLS / SSLпроверить сертификат сервера.

Вы можете использовать эти инструкции , чтобы помочь в устранении неполадок в вашей среде. Если что-то все еще не работает, следите за списком рассылки, и мы поможемСпасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...