【问题标题】:Backend with self-signed certificate带有自签名证书的后端
【发布时间】:2018-04-28 09:02:32
【问题描述】:

我正在构建一个后端/前端分离的网站。目前,该网站托管在我家中的 Kubernetes 集群上。前端有一个 pod,后端有一个。
这些 pod 可通过 Traefic 访问。我有内部 DNS 名称(即backend.home.local 和frontend.home.local)来访问它。我已经生成了一个自签名 CA,它在我的 .home.local 私有域上处理 SSL,因此我可以从我的已注册私有 CA 的计算机在我的私有网络中访问它们。

我的前端也使用相同的 url(.home.local)通过 HTTPS 与我的后端通信。我的前端知道 CA(我像 here 一样进行操作)。

我的前端也有一个外部域名。我可以通过 HTTPS 访问它,而不会在我的网络内外出现问题。

好的,到目前为止一切都很好。我的问题是,当我通过外部域名访问我的前端时,当我使用已注册我的私有 CA 的计算机时,我的前端成功与后端通信,但在我使用时它失败并出现 err_cert_authority_invalid没有我的 CA 的计算机。

据我了解,最终用户必须拥有网站所有资源的 CA,否则浏览器会抛出错误,即使前端使用自己的 CA 与后端发起其他 SSL 连接。

我也尝试在前端和后端之间停用 https,但这次我遇到了混合内容错误......不是更好。

我是否不可避免地必须使用适当的让我们加密证书从外部访问后端?我希望有一个无法通过外部访问的后端,但我不知道我是否可以正确地做到这一点。

我希望这篇文章不要太乱。 祝你有美好的一天。

【问题讨论】:

    标签: ssl https vue.js kubernetes


    【解决方案1】:

    我是否不可避免地必须使用适当的 let's encrypt 证书从外部访问后端?

    是的,就是这样。这并不一定意味着您必须更改后端服务,您可以通过 traefik 为您的后端进行 SSL 终止。通过 traefik 设置 Let's Encrypt 是完全自动化的过程,应该相当简单。

    想一想 - HTTPS 不仅是一个“值得拥有”的功能,它对于安全性至关重要。公共网络上的所有通信都应该安全地进行。

    【讨论】:

    • 非常感谢您的回复 :) 在我的情况下,后端和前端位于本地的同一个 kubernetes 集群中,我认为我可以有一个前端与外部世界以及后端进行通信外部世界无法直接访问。
    • 视情况而定。如果您可以使用从后端发送的数据预渲染您的前端,您可能不需要公开它。您还可以在客户端和后端之间设置一个层,某种 api 网关。
    • 好的,非常感谢。经过思考,我认为最干净的方法确实是公开 API 并设置适当的身份验证。然后,我的前端将通过公共 url 与后端通信。
    猜你喜欢
    • 2016-07-10
    • 1970-01-01
    • 2014-05-05
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多