AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 975690
Accepted
Altimus Prime
Altimus Prime
Asked: 2019-07-18 18:44:44 +0800 CST2019-07-18 18:44:44 +0800 CST 2019-07-18 18:44:44 +0800 CST

哪些 ssl 证书位于反向代理上?- nginx

  • 772

需要澄清 nginx 反向代理服务器上的上游 SSL

我一直在阅读有关反向代理和保护与上游服务器的 ssl 连接的 nginx 文档,但我仍然对哪些 ssl 证书去哪里感到困惑。我发现的许多示例都有 nginx 代理 localhost,但我的情况是端点位于不同的服务器、端口和物理位置。

我想在 nginx 服务器上解析几个域。这些域中的每一个在其当前服务器上都有一个用于其实际域名的 ssl 证书。

现在我让每台服务器都在它自己的网络位置和物理位置运行,但我希望有一个点来管理这些端点。

我的最终结果应该看起来像

                             client
                               |
                             nginx
                       https://example1.com
                       https://example2.com 
                       https://example3.com
                             x.x.x.x
                               |
               -----------------------------------------
               |                |                      |
https://example1.com    https://example2.com    https://example3.com
   a.b.c.d:1234             e.f.g.h:5678            i.j.k.l:9012

现在https://example1.com解析为 abcd:1234 ,它安装了自己的 ssl 证书。因为我需要向客户端表示 nginx 服务器正在为域 example1.com 服务,所以我认为我需要将 example1.com ssl 移动到前端运行的 nginx 服务器,对吗?如果我这样做,我在 abcd:1234 上使用什么 ssl 证书来维护安全的上游连接?

nginx 文档说 client.crt 和 server.crt,但 CA 使用域来注册这些。反向代理情况下的客户端和服务器是什么?对我来说,客户端是发出请求的浏览器。

哪些 ssl 证书位于反向代理上?

编辑:

我已经知道你可以通过简单地将基于 url 的证书放在代理服务器上来看起来像你有一个安全的连接。我希望知道在后端服务器上放置什么 ssl 证书。只是重复使用他们各自的证书?example1.com.crt代理服务器和后端服务器都可以吗?

nginx
  • 2 2 个回答
  • 11543 Views

2 个回答

  • Voted
  1. Best Answer
    Lacek
    2019-07-18T23:28:44+08:002019-07-18T23:28:44+08:00

    域的证书应该放在客户端“看到”它的地方,所以在你的情况下,如果你只希望 nginx 服务器可以从互联网上使用,那么所有公共证书都应该转到 nginx 服务器。

    如果您想保护后端连接,您可以在这些服务器上使用您想要的任何证书。您甚至可以使用自签名证书,并禁用 nginx 服务器上的证书检查,但创建自己的 CA 并将证书分发到后端可能更明智。

    您的配置看起来就像您绘制的一样,除了后端服务器将具有与其“内部”名称匹配的内部证书:

                                                     client
                                                       |
                                                     nginx
                                               (https://example1.com)
                                               (https://example1.com)
                                               (https://example1.com)
                                                        |
                +---------------------------------------+-----------------------------------+
                |                                       |                                   |
                |                                       |                                   |
    https://example1.internal.local/   https://example2.internal.local/   https://example3.internal.local/
           a.b.c.d                                  e.f.g.h                               i.j.k.l
    

    如果后端服务器可以从 Internet 访问,那么您可能希望为它们的 https 端口设置防火墙,以便只有 nginx 服务器可以连接它们。

    关于您关于客户端和服务器的问题:在网络中,客户端是发起连接的人。因此,在您的设置中,浏览器是客户端,而 nginx 服务器同时是客户端和服务器:它是浏览器的服务器,但它是后端服务器的客户端。

    • 4
  2. Lenniey
    2019-07-18T23:21:06+08:002019-07-18T23:21:06+08:00

    有很多可能性,这里有2个:

    1. 您的反向代理上有 1 个证书,其中包含使用SAN的所有域
    2. 您将每个域从 nginx重定向到相应的服务器,重写 URL

    要么让您的客户端单独与您的反向代理通信 (1),然后 nginx 将处理与上游服务器的连接,或者让 nginx 告诉您的客户端连接到需要公共 IP/DNS/证书的其他服务器 (2)那么他们自己的。

    根据您的网络布局,您还可以(也许应该)使用证书对反向代理和上游服务器之间的流量进行加密。为此,您仍然需要每个上游服务器的证书,但它们也可以是自签名的(但不应该)。

    如果您使用的是 Let's Encrypt 之类的东西,现在在证书上生成 SAN 非常容易,所以我通常选择选项 1。

    • 1

相关问题

  • Gzip 与反向代理缓存

  • nginx 作为代理的行为

  • Nginx 学习资源 [关闭]

  • 提供 70,000 个静态文件 (jpg) 的最佳方式?

  • 在 Apache、LightTPD 和 Nginx Web 服务器上提供 PHP 5.x 应用程序的现状?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve