首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪些ssl证书用于反向代理?- nginx

哪些ssl证书用于反向代理?- nginx
EN

Server Fault用户
提问于 2019-07-18 02:44:44
回答 2查看 14.8K关注 0票数 8

需要澄清nginx反向代理服务器

上的上游SSL。

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

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

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

我的最终结果应该是

代码语言:javascript
复制
                             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解析为a.b.c.d:1234,它安装了自己的ssl证书。因为我需要向客户表示nginx服务器正在为域example1.com服务,所以我认为我需要example1.comSSL移动到frontrunning nginx服务器,对吗?如果这样做,我在a.b.c.d:1234上使用什么ssl证书来维护安全的上游连接?

nginx文档显示client.crt和server.crt,但是CA使用一个域来注册它们。在反向代理情况下,客户机和服务器是什么?对我来说,客户端就是提出请求的浏览器。

哪个ssl证书在反向代理上的位置?

编辑:

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

EN

回答 2

Server Fault用户

回答已采纳

发布于 2019-07-18 07:28:44

域的证书应该放在客户“看到”它的位置,因此在您的情况下,如果您只希望从internet上获得nginx服务器,那么所有的公共证书都应该转到nginx服务器。

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

您的配置将与所绘制的完全相同,只不过后端服务器将具有与其“内部”名称匹配的内部证书:

代码语言:javascript
复制
                                                 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
EN

Server Fault用户

发布于 2019-07-18 07:21:06

有相当多的可能性,这里有2:

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

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

您也可以(或者应该)使用证书加密反向代理和上游服务器之间的通信量,这取决于您的网络布局。为此,您仍然需要为每个上游服务器提供一个证书,但它们也可以是自签名的(但不应该)。

如果您正在使用类似于“让我们加密”的方法,那么在证书上生成SAN是非常容易的,所以我通常使用选项1。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/975690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档