Nginx

哪些 ssl 證書位於反向代理上?- nginx

  • July 19, 2019

需要澄清 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 伺服器可以從網際網路上使用,那麼所有公共證書都應該轉到 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 伺服器同時是客戶端和伺服器:它是瀏覽器的伺服器,但它是後端伺服器的客戶端。

引用自:https://serverfault.com/questions/975690