我正在构建一个后端/前端分离的网站。现在这个网站托管在我家里的 Kubernetes 集群上。一个 pod 用于前端,另一个用于后端。
这些 pod 可通过 Traefic 访问。我有内部 DNS 名称(即 backend.home.local
和 frontend.home.local
)来访问它。我生成了一个自签名 CA,它处理我的 .home.local
私有(private)域上的 SSL,这样我就可以从我的注册了我的私有(private) CA 的计算机访问我的私有(private)网络中的它们。
我的前端也通过 HTTPS 使用相同的 url(在 .home.local
中)与我的后端通信。我的前端知道 CA(我按 here 进行)。
我的前端也有一个指向外部域名。我可以通过 HTTPS 在我的网络内外毫无问题地访问它。
好的,到目前为止一切顺利。我的问题是,当我通过我的外部域名访问我的前端时,当我使用一台已注册我的私有(private) CA 的计算机时,我的前端成功与后端通信,但失败并显示 err_cert_authority_invalid
当我在没有 CA 的情况下使用计算机时。
据我所知,最终用户必须拥有网站所有资源的 CA,否则浏览器会抛出错误,即使前端使用自己的 CA 启动与后端的其他 SSL 连接。
我也尝试停用前端和后端之间的 https,但这次我遇到了混合内容错误...不是更好。
我是否不可避免地必须有一个后端可以通过适当的 let's encrypt 证书从外部访问?我希望有一个后端无法通过外部访问,但我不知道我是否可以正确地做到这一点。
希望这篇文章不要太乱。 祝你有美好的一天。
最佳答案
Do I inevitably have to have a backend accessible from outside with a proper let's encrypt certificate ?
是的,是这样的。这并不一定意味着你必须改变你的后端服务,你可以通过 traefik 为你的后端做 SSL 终止。通过 traefik 设置 Let's Encrypt 是完全自动化的过程,应该相当简单。
想一想 - HTTPS 不仅仅是一个“可有可无”的功能,它对于安全性至关重要。所有通过公共(public)网络进行的通信都应该安全进行。
关于ssl - 带有自签名证书的后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50074761/