在本系列文章中,我們將討論Citrix Gateway+StoreFront+CVAD的工作流。我將把工作流分為5個步驟,上篇中介紹前兩個步驟,下篇介紹剩餘三個步驟。
1) SSL連接
2) 認證
3) 獲取桌面/應用列表
4) 點擊應用獲取.ica文件
5) 啟動桌面/應用
1、SSL連接
這是用戶在瀏覽器中鍵入Citrix ADC Gateway vServer位址的第一步。如果出現任何問題,我們需要關注用戶端和伺服器之間的SSL握手。

1.1 Client_Hello
Client_Hello是TLS握手的第一個資料包,我們可以檢查其中的以下專案:
- SNI(ServerName Indication)
- Cipher Suits
- Protocol

1.2 Server Hello
伺服器hello是用戶端hello的回應,用於協商來自用戶端hello的協定版本和密碼集,這些內容對於後續的加密非常重要。

1.3 Certificate
伺服器將其證書發送給用戶端,以便用戶端驗證證書是否可信。

1.4 金鑰交換和更改密碼規範
大多數 SSL/TLS 問題都發生在上述 3 個步驟中。“金鑰交換”步驟用於協商資料加密的主金鑰和工作階段金鑰。使用“更改密碼規範”步驟進入資料加密通道。

1.5 HTTPs資料(加密的HTTP請求和回應)
握手之後,客戶機和伺服器發送由SSL/TLS握手中協商的金鑰加密的HTTP請求和回應。

2. 認證
通常,客戶使用LDAP域身份驗證。在本文中,我將以雙因子身份驗證為例(LDAP+Radius)。

2.1 用戶端鍵入用戶憑據並發送到Gateway vServer


注意:這裡我使用NSG的私密金鑰來解密HTTPs資料
2.2 NSG與LDAP伺服器和Radius伺服器通信,以驗證用戶的憑據
A.
bindRequest被發送到LDAP伺服器以授權NSG本身,LDAP伺服器回應成功。這裡的用戶administrator@donnie.com在Citrix ADC的LDAP策略中配置。

B.
searchRequest被發送到LDAP伺服器以檢查登錄用戶是否存在。

C.
LDAP伺服器通過searchResEntry回應searchRequest,searchResEntry包含一些LDAP資訊,例如登錄使用者的組資訊。

D.
NSG向LDAP伺服器發送一個新的bindRequest來驗證登錄使用者的密碼。

E.
NSG使用Radius伺服器和Server responses Access-Accept驗證權杖資訊。

2.3 NSG用一個正常的302響應和另一個200響應將URL重定向到StoreFront

2.4 使用者在Store頁面再次點擊“登錄”。向SF發送新的登錄請求。在這裡,使用者不需要再次輸入用戶名/密碼

2.5 NSG與SF通信以通過SF的認證。
A.
NSG向SF發送請求,SF回應401,請求NSG執行身份驗證。

B.
NSG通過CitrixAGBasic認證方法將使用者資訊發送給SF。

C.
SF通過使用Kerberos協議聯繫AD伺服器來驗證使用者的用戶名和密碼。

D.
SF returns200 OK to NSG.

E.
NSG向用戶端返回相同的200 OK。
發表迴響