通過配置用戶端認證,您可以在用戶端和邊緣安全加速 ESA節點間的鏈路上使能TLS雙向認證(mTLS),從而提升用戶端接入的安全等級。
適用情境
雙向傳輸層安全 mTLS(Mutual TLS)技術適用於需要對通訊雙方都進行強身分識別驗證的高安全情境。
適用情境特點:
-
通訊雙方都是可控實體(服務、裝置、系統)
-
需要強身份綁定(非臨時 Token)
-
能夠統一管理 PKI 體系(CA、認證分發、吊銷)
典型適用情境樣本:
-
微服務架構中的服務間通訊(Service-to-Service),典型技術棧:Istio、Linkerd、Kubernetes,例如:訂單服務調用支付服務時,雙方必須通過 mTLS 驗證彼此身份。
-
API Gateway與後端服務的安全對接,例如:企業內部 API、銀行開放平台、第三方 SaaS 整合。
-
物聯網(IoT)裝置與雲平台通訊。
-
企業內網零信任存取控制,取代傳統 VPN「一次認證、全程信任」模型。
-
高安全要求的金融、支付、醫學系統,合規驅動,滿足 PCI-DSS、HIPAA、GDPR 等對端到端加密和身分識別驗證的要求。
不適用情境特點:
-
普通 網頁瀏覽器訪問網站(如電商、新聞網站),使用者無法管理用戶端認證,體驗差。
-
公開開放的 RESTful API(無需身份綁定),使用 OAuth2 / API Key 更合適。
-
低安全要求的自我裝載環境,可用單向 TLS + Basic Auth 簡化流程。
mTLS 工作機制
ESA 的用戶端認證認證(mTLS)僅在用戶端與 ESA 節點之間的鏈路上生效。TLS 握手在 ESA 節點終止,ESA 節點驗證用戶端認證的有效性後,將請求轉寄至來源站點,用戶端認證不會透傳到來源站點。
如果您需要實現端到端 mTLS(即用戶端與來源站點之間直接建立 TLS 雙向認證,用戶端認證透傳到來源站點),須使用企業版套餐的四層代理功能。四層代理採用 TCP 透傳模式,不終止 TLS 串連,將用戶端的 TCP 流量直接轉寄至來源站點,從而實現端到端的 mTLS。具體配置方法,請參見管理四層代理應用。
用戶端認證簽發
您可以直接使用ESA提供的CA建立用戶端認證,然後將產生的用戶端認證部署在您的移動端應用程式上,我們會為每個賬戶產生一個唯一的CA,所有由ESA簽發的用戶端認證都將被節點預設為可信。
認證預設有效期間為1年。
建立認證
-
在ESA控制台選擇網站管理,在網站列單擊目標網站。
-
在左側導覽列,選擇。單擊建立認證。
-
根據實際需求,選擇CSR產生方式、私密金鑰類型和認證有效期間後單擊確定。
重要在彈出的認證預覽對話方塊中,單擊頁面中的複製認證、複製私密金鑰將內容複寫並粘貼到您的用戶端。關閉彈窗後不會在其他地方顯示認證及私密金鑰。
綁定網域名稱
通過將用戶端認證與特定網域名稱綁定,可以實現雙向認證(mTLS),確保只有持有正確、有效用戶端認證的使用者才能訪問特定服務或資源。
-
在ESA控制台選擇網站管理,在網站列單擊目標網站。
-
在左側導覽列,選擇。
-
單擊網域名稱地區的配置,在網域名稱資訊框中填入網域名稱後單擊確定。
說明-
一次最多輸入50個網域名稱。
-
網域名稱必須和網站匹配。
-
吊銷認證
您若不需要認證信任時,可以吊銷認證,具體操作如下:
-
在ESA控制台選擇網站管理,在網站列單擊目標網站。
-
在左側導覽列,選擇。
-
選擇,單擊吊銷。
-
在彈出的對話方塊中,勾選我已確認該認證已不再使用。單擊確定吊銷。
自訂認證簽發
除了使用上述的ESA CA簽發的用戶端認證外,您還可以使用您通過私人渠道簽發的認證,此時需要對認證的CA進行配置。
自訂認證簽發目前只支援OpenAPI途徑使用,每個套餐最多上傳5個CA認證。
操作步驟
-
調用上傳用戶端mTLS CA認證介面,上傳CA根憑證,並記錄該OpenAPI響應中返回的認證ID。
-
調用網域名稱綁定介面,為CA認證綁定生效主機列表,只有綁定主機才可以使用mTLS功能並使用對應CA認證進行mTLS校正。
-
其他自訂mTLS認證功能相關OpenAPI如下表所示。
介面名稱
介面描述
上傳自訂簽發CA認證。
展示所有已上傳的自訂簽發CA認證。
刪除自訂簽發CA認證。
查詢某一個自訂簽發CA認證詳情。
為自訂簽發CA認證綁定網域名稱。
查詢自訂簽發CA認證綁定網域名稱情況。
攔截認證失敗請求
您可以通過配置WAF規則,對用戶端認證認證失敗的請求進行攔截。
操作步驟
-
在ESA控制台選擇網站管理,在網站列單擊目標網站。
-
在左側導覽列中選擇進入自訂規則配置頁面。
-
配置WAF自訂規則。
-
已驗證客戶端認證設定為
。 -
主機名稱填寫您期望攔截的網域名稱資訊。
重要請務必對主機名稱條件進行配置,否則所有未進行用戶端認證認證或用戶端認證失敗的請求都會被攔截。
-
-
將操作設定為攔截,或根據您的需求配置為其他動作。
-
單擊確定完成規則添加。
規則新增完成後,所有訪問規則中網域名稱的請求,如果未進行用戶端認證認證或用戶端認證失敗,將被攔截並返回403狀態代碼。
驗證環節
-
當用戶端不攜帶認證進行訪問時,被WAF攔截返回403。

-
當用戶端攜帶ESA頒發的用戶端認證進行訪問時,請求正常。請將命令中的網域名稱、認證與私密金鑰路徑替換為您實際環境。
curl -v "https://example.com" --cert ./example.crt --key ./example.key * Trying 198.51.100.10... * TCP_NODELAY set * Connected to example.com (198.51.100.10) port 443 (#0) * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * TLSv1.2 (OUT), TLS Unknown, Certificate Status (22): * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * NPN, negotiated HTTP1.1 * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Request CERT (13): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Certificate (11): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS handshake, CERT verify (15): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Next protocol (67): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * Server certificate: * subject: CN=example.com * start date: Jul 31 00:00:00 2024 GMT * expire date: Jul 31 23:59:59 2025 GMT * subjectAltName: host "example.com" matched cert's "example.com" * issuer: C=US; O=Example CA; CN=Example DV TLS CA * SSL certificate verify ok. > GET / HTTP/1.1 > Host: example.com > User-Agent: curl/7.74.0 > Accept: */*