Безопасные клиентские подключения с TLS
Используйте TLS, когда производители, потребители, средства автоматизации или администраторы подключаются к RabbitMQ через недоверенную сеть, через внешний NodePort или LoadBalancer, либо между кластерами. TLS защищает трафик AMQP и HTTP API управления от передачи в открытом виде.
В этом руководстве описан TLS для RabbitMQ listener, предназначенного для клиентского доступа. Оно не заменяет управление пользователями, виртуальными хостами или правами доступа. Для production-нагрузок настраивайте и TLS, и пользователей RabbitMQ с минимально необходимыми привилегиями.
Содержание
Предварительные требованияПроцедура1. Создайте TLS secrets2. Настройте RabbitmqCluster3. Дождитесь rollout4. Проверьте TLS listeners5. Подключитесь с использованием TLSПроверкаУстранение неполадокСвязанная информацияПредварительные требования
Перед включением TLS убедитесь, что выполнены следующие условия:
- У вас есть экземпляр
RabbitmqCluster. - У вас есть серверный сертификат и закрытый ключ для имен доступа RabbitMQ, которые используют клиенты.
- В Subject Alternative Name сертификата включены DNS-имена сервисов внутри кластера и любые внешние DNS-имена или IP-адреса, используемые клиентами.
- Если клиентам необходимо проверять private CA, у вас есть CA certificate.
- Приложения готовы использовать
amqps://и TLS endpoint управления после отключения non-TLS listeners.
Установка spec.tls.disableNonTLSListeners в значение true отключает non-TLS listeners для RabbitMQ, плагина управления и поддерживаемых плагинов протоколов. Включайте этот параметр только после того, как все клиенты и операционные инструменты смогут использовать TLS endpoint.
Процедура
1. Создайте TLS secrets
Создайте TLS secret в том же namespace, что и RabbitmqCluster:
Если клиенты используют private CA, создайте CA secret:
2. Настройте RabbitmqCluster
Обновите RabbitmqCluster, чтобы он ссылался на TLS secret. Укажите caSecretName, когда брокер должен доверять private CA для mutual TLS или для соответствующих плагинов протоколов, таких как web_stomp и web_mqtt. Внешним клиентам AMQP или управления по-прежнему нужен CA certificate в их собственном trust store.
Если вы мигрируете существующих клиентов, оставьте disableNonTLSListeners неуказанным или установите его в false на время миграции. После того как все клиенты начнут использовать TLS, измените значение поля на true.
3. Дождитесь rollout
Дождитесь, пока экземпляр вернется в активную фазу, и все RabbitMQ Pod будут готовы:
4. Проверьте TLS listeners
Проверьте список listeners из RabbitMQ Pod:
Для конфигурации только с TLS вывод должен включать TLS listeners и больше не должен показывать обычные AMQP или HTTP listeners для отключенных протоколов.
Также проверьте порты Kubernetes Service, которые доступны клиентам:
5. Подключитесь с использованием TLS
Используйте amqps:// для клиентов AMQP:
%2f — это URL-encoded форма виртуального хоста / по умолчанию. Замените его на URL-encoded virtual host, который использует ваше приложение.
Используйте TLS options при запуске rabbitmqadmin через management API:
Если путь к client certificate, key или CA указан неверно, rabbitmqadmin завершится с ошибкой до того, как сможет пройти аутентификацию в RabbitMQ.
Проверка
После включения TLS выполните следующие проверки: