作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與SD-WAN方案的介紹與推廣。

所以接下來幾篇,我們要以問答的方式,來回應常被問到的負載平衡功能相關問題。提醒大家,這邊我們所有談到的功能與架構,以NSX-T Data Center 2.4版為主,並且都是在Advanced Networking and Security介面裡面操作。

 

  1. NSXLoad Balancer有支援SSL Offload嗎?可以對用戶端加密做HTTPS,但往伺服器端走HTTP嗎?

 

可以喔。

 

NSX Load Balancer完整支持http / https,SSL Offload功能當然能支援。透過將憑證放在Load Balancer上,用戶端的https呼叫在負載平衡器進行解密 (SSL Offload),進行必要的URL檢查、改寫、負載平衡配置、XFF操作等。接著往後端伺服器端是否要再加密也是管理者的選擇。下面兩種機制都是支援的:

當我們需要進行這樣的操作 (HTTPS to HTTP),幾個主要的配置必需進行:

 

  • 把這個應用的憑證,可能是由外部憑證頒發機構 (Certificate Authority) 簽發,或是企業內部自建憑證中心簽發,匯入NSX。

 

  • 在建立Virtual Server時,選擇的Application Type必須是Layer 7,而選擇的Application Profile必須是HTTP型態(而非TCP or UDP)。

 

  • 在後面的Client Side SSL必須選擇啟用(Client到Load Balancer間要跑HTTPS),輸入預設或自訂的client-ssl-profile,並選擇指定的憑證。

 

  • 因為需求是用戶端要使用HTTPS,但負載平衡器往後端伺服器端跑HTTP,因此Server Side SSL就選擇要關閉。

 

下圖內,在System – Certificates – Certificates的工作介面內,選擇Import Certificate就可以把申請下來的憑證輸入了。

啟用Virtual Server時務必要選擇Layer 7 (HTTPS or HTTP)的型態:

Client Side SSL必須要Enabled,並選擇對應的client-ssl-profile與這個Virtual Server網址對應的憑證(在最前面步驟輸入)

但Server Side SSL 就必須是關閉了,因為從負載平衡器到 Server 端只想要跑HTTP不加密。

 

  1. 那如果有些應用,我們在Server端也想要跑HTTPS加密喔,這樣可以嗎?

 

當然可以喔。

 

和上面第一步驟的差異是我們必須要配置Server Side SSL。此時,Server Side SSL要變為開啟,Server SSL Profile必須輸入。有幾個項目必須注意:

 

  • 有些應用比較舊。在NSX預設的Server SSL Profile內,選定的加密方式 (SSL Ciphers) 與加密協定 (SSL Protocols) 都是較新較安全的,比如說協定僅支援TLS 1.1或2,TLS 1.0 or SSL_V3沒有支援。而如果你的應用比較舊沒法改,只能用這些舊的協定或加密法,那請要自訂一個Server SSL Profile,並把這些舊加密法選進去。

 

  • 下面的Server Authentication如果啟用,代表負載平衡器與後端Web伺服器間的憑證必須要正確。而如果不選的話,代表即使伺服器端是使用自簽(Self-Signed)或是未確認CA的憑證,也可以過。當然在要求高度安全的生產環境內,請把這個選項啟用並輸入對應的憑證或內部CA資訊。

  1. 所以如果Client Side SSLServer Side SSL都關閉,就是兩邊都只跑HTTP不加密摟。

 

是的。

 

而且特別說明一下,當我們在Virtual Server內選擇Layer 7,但關閉Client Side SSL與Server Side SSL時,此時負載平衡器會看HTTP的表頭,也就是說我們可以特別去針對HTTP表頭進行需求的檢查(比如說URL)或是改寫(像是cookie值或是加入X-forwarded-For)。但如果我們在Virtual Server內選擇Layer 4的TCP 80 Port,雖然同樣是HTTP協定,但此時負載平衡器不會去進行HTTP表頭的檢視,這代表的就是不能進行上述的七層操作。

 

  1. 我們不需要在Load Balancer端做SSL Offload,直接讓ClientServerSSL通訊加解密可以嗎?

 

沒有問題喔。

 

而既然Load Balancer不需要解開SSL看HTTP表頭,不需要處理憑證,那這邊其實很單純,對負載平衡器來說這就只是TCP 443 Port的連線轉送。因此,在配置Virtual Server時,不用選Layer 7,直接選Layer 4 TCP就可以。

 

當然,在這樣的配置內,所有的憑證處理等機制都應該直接在後端的Web Server上面進行即可。而同樣,因為負載平衡器無法看到HTTP表頭資訊,所有的像是URL檢查、X-Forwared-For改寫等等機制,在這個架構內就無法進行了。

 

  1. 我們可以在ClientLoad Balancer間不加密跑HTTP,但負載平衡器與Server間加密跑HTTPS嗎?

 

嗯…被客戶問到這題時,我內心充滿了疑問…這到底是什麼樣的應用情境呢?我連被PM反問時都不知道怎麼回答啊…

 

不行,NSX Load Balancer並沒有支援這種情境。在Virtual Server內,你不可以只開Server Side SSL,卻不開Client Side SSL。雖然我完全不懂在什麼時候才會碰到這樣的狀況。

 

其他負載平衡相關的討論還多得很,我們下期待續。