Emtpy "ca.crt" файл от cert-менеджера - PullRequest
1 голос
/ 04 июля 2019

Я использую cert-manager для генерации сертификатов TLS для моего приложения в Kubernetes с Let's Encrypt.

Он запущен, и я вижу "ca.crt", "tls.crt" и "tsl.key«внутри контейнера моего приложения (в /etc/letsencrypt/).

Но "ca.crt" пуст, и приложение жалуется на это (Error: Unable to load CA certificates. Check cafile "/etc/letsencrypt/ca.crt").Два других файла выглядят как обычные сертификаты.

Что это значит?

Ответы [ 3 ]

1 голос
/ 05 июля 2019

Согласно документации, cafile для чего-то другого (доверенные корневые сертификаты), и, вероятно, было бы более правильным использовать capath / etc / ssl / certs в большинстве систем.

Вы можете следовать этому руководству, если у вас установлена ​​операционная система Windows: * 1004 TLS *. Статья о том, как включить Mosquitto и клиенты в использование протокола TLS.

Для установления безопасного TLS-соединения с брокером Mosquitto требуются файлы ключей и сертификатов. Создание всех этих файлов с правильными настройками - не самая простая вещь, но за вознаграждение предоставляется безопасный способ связи с брокером MQTT.

Если вы хотите использовать сертификаты TLS, сгенерированные с помощью службы Let's Encrypt. Вы должны знать, что текущие версии mosquitto никогда не обновляют настройки прослушивателя при запуске, поэтому при регенерации сертификатов сервера вам потребуется полностью перезапустить посредник.

Если вы используете DigitalOcean Kubernetes, попробуйте следовать этой инструкции: ca-ninx , вы можете использовать Cert-Manager и входной контроллер nginx, они будут работать как certbot.

Другое решение заключается в том, чтобы создать сертификат локально на вашем компьютере, а затем загрузить его в секрет kubernetes и использовать секрет при входе.

1 голос
/ 05 июля 2019

Я заметил это:

$ kubectl describe certificate iot-mysmartliving -n mqtt
...
Status:
  Conditions:
    ...
    Message:  Certificate issuance in progress. Temporary certificate issued.

и связанную строку в документации:

https://docs.cert -manager.io / en / latest / tasks / Issing-Certificates/index.html?highlight=gce#teilitary-certificates-whilst-issuing

Они объясняют, что два существующих сертификата созданы для некоторой совместимости, но они недействительны, пока эмитент не выполнил свою работу.

Итак, это говорит о том, что эмитент не настроен должным образом.


Редактировать : да, это так.Задача DNS не удалась, строка отладки, которая помогла, была

kubectl describe challenge --all-namespaces=true

В общем,

kubectl describe clusterissuer,certificate,order,challenge --all-namespaces=true
1 голос
/ 04 июля 2019

С помощью cert-manager вы должны использовать контроллер nginx-ingress, который будет работать как точка раскрытия.

ingress nginx controller создаст один балансировщик нагрузки и вы сможете настроить там свой сертификат tls приложения.

В модуле cert-manager нет ничего относительно сертификата.

, поэтому настройте вход nginx с помощью cert-manager, который поможет управлять сертификатом tls.этот сертификат будет храниться в секрете kubernetes.

Пожалуйста, следуйте этому руководству для более подробной информации:

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes

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