上的上游SSL。
我一直在阅读nginx文档、关于反向代理和保护到上游服务器的ssl连接,但我仍然不知道哪些ssl证书会去哪里。我发现的许多示例都有nginx代理本地主机,但我的情况是在不同的服务器、端口和物理位置上都有端点。
我希望在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解析为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使用一个域来注册它们。在反向代理情况下,客户机和服务器是什么?对我来说,客户端就是提出请求的浏览器。
编辑:
我已经知道,只要简单地将基于url的证书放置在代理服务器上,您就可以看起来有一个安全的连接。我希望知道的是在后端服务器上设置什么ssl证书。只是重复使用他们各自的证书?example1.com.crt可以同时运行代理服务器和后端服务器吗?
发布于 2019-07-18 07:28:44
域的证书应该放在客户“看到”它的位置,因此在您的情况下,如果您只希望从internet上获得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服务器同时是客户机和服务器:它是浏览器的服务器,但它是后端服务器的客户机。
发布于 2019-07-18 07:21:06
有相当多的可能性,这里有2:
要么让客户端只与反向代理(1)通信,然后nginx将处理到上游服务器的连接,要么让nginx告诉客户端连接到其他服务器(2),后者需要自己的公共IP/ DNS/证书。
您也可以(或者应该)使用证书加密反向代理和上游服务器之间的通信量,这取决于您的网络布局。为此,您仍然需要为每个上游服务器提供一个证书,但它们也可以是自签名的(但不应该)。
如果您正在使用类似于“让我们加密”的方法,那么在证书上生成SAN是非常容易的,所以我通常使用选项1。
https://serverfault.com/questions/975690
复制相似问题