我有一个使用 https 的 Scala+AKKA 网络服务器,以及一个使用 ssl 的 React+NextUI 网络应用。实际的服务器操作系统运行 nginx 并将调用适当地重定向到 next 或 Scala 网络服务器。
我想了解,我是否只为 nginx 生成 SSL 证书并将它们用于其后面的其他应用程序,还是它们都需要单独的证书?
如果有人能解释这个过程那就太好了,SSL 对我来说很新。
编辑:
我正在使用 javascriptcrypt
模块,因此我必须使用 https 启动 Next。我别无选择,因为没有 ssl 连接,crypt 将无法工作。因此,仅使用 https 配置 sslnginx
并让它以 http 形式传递给 next 不是一个选项
为了使用 SSL 保护您的架构,同时满足您的 React+NextUI 应用程序和 Scala+AKKA Web 服务器的要求,您首先需要有效地管理 SSL 终止。您可以这样做:
NGINX 的单一 SSL 证书: NGINX 充当反向代理并处理所有传入的 HTTPS 流量。在 NGINX 上配置有效的 SSL 证书以在此层终止 SSL。这可确保客户端和 NGINX 之间的加密通信。对于大多数设置来说,这已经足够了,因为后端服务通常通过内部网络进行通信,而 HTTPS 不是强制性的。
具有 HTTPS 要求的 React+NextUI: 由于 React+NextUI 中的 JavaScript 加密模块要求使用 HTTPS,因此您有两个选择:
选项 1:通过 NGINX 代理 HTTPS:配置 NGINX 以使用 HTTPS 与 NextJS 应用通信。在这种情况下,您可以对 NGINX 和 NextJS 应用重复使用相同的 SSL 证书(如果托管在同一个域/子域上)。选项 2:单独的 SSL 证书:如果 NextJS 应用需要直接 HTTPS 通信(不通过 NGINX 代理),请为其生成并配置单独的 SSL 证书。这可以是来自 CA 的有效证书,如果流量是内部的,则可以是自签名证书。
Scala+AKKA 后端: 对于 Scala+AKKA 后端,如果它与 NGINX 进行内部通信,则 HTTPS 不是强制性的。除非特定安全策略要求端到端使用 HTTPS,否则请将 NGINX 配置为以 HTTP 形式转发请求。