idou老師教你學Istio 17 : 透過HTTPS進行雙向TLS傳輸

CCE_huawei發表於2019-02-14

眾所周知,HTTPS是用來解決 HTTP 明文協議的缺陷,在 HTTP 的基礎上加入 SSL/TLS 協議,依靠 SSL 證書來驗證伺服器的

身份,為客戶端和伺服器端之間建立“SSL”通道,確保資料運輸安全。而Istio的雙向TLS也用來保證資料傳輸安全。那麼,

Istio的雙向TLS是如何與HTTPS服務一起工作的呢?


下面透過例項演示Istio的雙向TLS是如何與HTTPS服務一起工作的,包括三個部分:


在沒有 Istio sidecar 的情況下部署 HTTPS 服務


關閉 Istio 雙向 TLS 認證情況下部署 HTTPS 服務


部署一個啟動雙向 TLS 的 HTTPS 服務。對於每個部署,請求連線到此服務並驗證其是否有效。


環境準備


未啟用雙向TLS的安裝了Istio的k8s叢集


安裝openssl,生成證書和configmap




透過openssl生成key和證書:



從給定的公私鑰對建立TLS secret:



使用kubectl建立Configmap:



1.沒有部署sidecar


建立一個不部署sidecar的基於nginx的HTTPS服務,並建立一個部署sidecar的sleep應用來排程nginx




檢查上述pod是否正常執行



在pod正常執行時,從sleep應用的istio-proxy容器內訪問HTTPS服務:



可以看到,nginx能正常訪問。


2. 部署sidecar並禁用雙向TLS


刪除上一步建立的未部署sidecar的HTTPS服務,並用sidecar部署它



檢視pod是否正常啟動: 



在pod正常執行時,從istio-proxy容器執行,可以看到,nginx能正常訪問:



3. 部署sidecar,並啟用雙向TLS


透過配置網格級別的認證策略啟用全域性雙向TLS,首先配置網格認證策略:



配置目的地規則:



此時,網格中的所有服務已經開啟了雙向TLS功能,從sleep容器中訪問nginx是正常的:



從sleep容器中訪問時,工作流為“sleep→sleep-proxy→nginx-proxy→nginx” ,此時,整個過程是7層流量,在

sleep-proxy到nginx-proxy之間有一個L4雙向TLS加密。


而在istio-proxy中執行時,它無法工作:



此時,工作流為“sleep-proxy→nginx-proxy→nginx”,nginx-proxy會從sleep-proxy中獲得雙向TLS流量,但是

sleep-proxy無法提供客戶端證書,因此,它不起作用。




總結:透過上述演示,可以瞭解到,當istio sidecar使用HTTPS服務部署時,無論是否啟用雙向TLS功能,代理自動從L7降到

L4,所以,它不會終止原來的HTTPS通訊。

相關服務請訪問https://support.huaweicloud.com/cce/index.html?cce_helpcenter_2019


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908804/viewspace-2633846/,如需轉載,請註明出處,否則將追究法律責任。

相關文章