来自证书管理器的空 "ca.crt" 文件
Emtpy "ca.crt" file from cert-manager
我使用 cert-manager
通过 Let's Encrypt 为我在 Kubernetes 上的应用程序生成 TLS 证书。
它是 运行,我可以在我的应用程序容器中看到 "ca.crt"、"tls.crt" 和 "tsl.key"(在 /etc/letsencrypt/
中)。
但是"ca.crt"是空的,应用程序抱怨它(Error: Unable to load CA certificates. Check cafile "/etc/letsencrypt/ca.crt"
)。其他两个文件看起来像普通证书。
这是什么意思?
对于 cert-manager,您必须使用 nginx-ingress
控制器,它将用作曝光点。
入口 nginx 控制器将创建一个负载均衡器,您可以在那里设置您的应用程序 tls 证书。
cert-manager 的 pod 中没有关于证书的内容。
所以使用 cert-manager 设置 nginx 入口,这将有助于管理 tls 证书。该证书将存储在 kubernetes secret 中。
请按照本指南了解更多详情:
根据文档,cafile 用于其他用途(受信任的根证书),在大多数系统上使用 capath /etc/ssl/certs 可能更正确。
如果您有 Windows 操作系统,则可以按照本指南进行操作:
tls。
文章是关于如何让 Mosquitto 和客户端使用 TLS 协议。
与 Mosquitto 代理建立安全的 TLS 连接需要密钥和证书文件。使用正确的设置创建所有这些文件并不是最简单的事情,但可以通过安全的方式与 MQTT 代理通信。
如果您想使用使用 Let's Encrypt 服务生成的 TLS 证书。
您需要注意,当前版本的 mosquitto 在 运行 时从不更新侦听器设置,因此当您重新生成服务器证书时,您将需要完全重新启动代理。
如果您使用 DigitalOcean Kubernetes,请尝试遵循此说明:ca-ninx,您可以使用 Cert-Manager 和入口 nginx 控制器,它们将像 certbot 一样工作。
另一种解决方案是在您的机器上本地创建证书,然后将其上传到 kubernetes secret 并在 ingress 上使用 secret。
我注意到了这一点:
$ kubectl describe certificate iot-mysmartliving -n mqtt
...
Status:
Conditions:
...
Message: Certificate issuance in progress. Temporary certificate issued.
和文档中的相关行:
他们解释说,现有的两个证书是为了某种兼容性而生成的,但在颁发者完成工作之前它们是无效的。
这表明发行者设置不正确。
编辑:是的。 DNS 质询失败,有用的调试行是
kubectl describe challenge --all-namespaces=true
更一般地说,
kubectl describe clusterissuer,certificate,order,challenge --all-namespaces=true
我使用 cert-manager
通过 Let's Encrypt 为我在 Kubernetes 上的应用程序生成 TLS 证书。
它是 运行,我可以在我的应用程序容器中看到 "ca.crt"、"tls.crt" 和 "tsl.key"(在 /etc/letsencrypt/
中)。
但是"ca.crt"是空的,应用程序抱怨它(Error: Unable to load CA certificates. Check cafile "/etc/letsencrypt/ca.crt"
)。其他两个文件看起来像普通证书。
这是什么意思?
对于 cert-manager,您必须使用 nginx-ingress
控制器,它将用作曝光点。
入口 nginx 控制器将创建一个负载均衡器,您可以在那里设置您的应用程序 tls 证书。
cert-manager 的 pod 中没有关于证书的内容。
所以使用 cert-manager 设置 nginx 入口,这将有助于管理 tls 证书。该证书将存储在 kubernetes secret 中。
请按照本指南了解更多详情:
根据文档,cafile 用于其他用途(受信任的根证书),在大多数系统上使用 capath /etc/ssl/certs 可能更正确。
如果您有 Windows 操作系统,则可以按照本指南进行操作: tls。 文章是关于如何让 Mosquitto 和客户端使用 TLS 协议。
与 Mosquitto 代理建立安全的 TLS 连接需要密钥和证书文件。使用正确的设置创建所有这些文件并不是最简单的事情,但可以通过安全的方式与 MQTT 代理通信。
如果您想使用使用 Let's Encrypt 服务生成的 TLS 证书。 您需要注意,当前版本的 mosquitto 在 运行 时从不更新侦听器设置,因此当您重新生成服务器证书时,您将需要完全重新启动代理。
如果您使用 DigitalOcean Kubernetes,请尝试遵循此说明:ca-ninx,您可以使用 Cert-Manager 和入口 nginx 控制器,它们将像 certbot 一样工作。
另一种解决方案是在您的机器上本地创建证书,然后将其上传到 kubernetes secret 并在 ingress 上使用 secret。
我注意到了这一点:
$ kubectl describe certificate iot-mysmartliving -n mqtt
...
Status:
Conditions:
...
Message: Certificate issuance in progress. Temporary certificate issued.
和文档中的相关行:
他们解释说,现有的两个证书是为了某种兼容性而生成的,但在颁发者完成工作之前它们是无效的。
这表明发行者设置不正确。
编辑:是的。 DNS 质询失败,有用的调试行是
kubectl describe challenge --all-namespaces=true
更一般地说,
kubectl describe clusterissuer,certificate,order,challenge --all-namespaces=true