2011-10-04 65 views
0

我們有一個wcf客戶端,它調用一個外部web服務。該服務通過SSL訪問。證書不是自簽名證書。它由Verisign發佈。WCF客戶端只能在訪問URL後使用IE

客戶端位於IIS 6中,應用程序池的標識是域服務用戶。

我們希望我們的客戶端來訪問遠程服務我們得到如下衆所周知的異常每次:「無法建立與事務管理局的SSL/TLS安全通道的信任關係。」

原來,一旦您在同一臺服務器上使用IE訪問URL,我們的WCF客戶端就能按預期工作,並接受證書!

我的結論是,通過IE訪問的URL以某種方式修改了服務器,我們的WCF客戶端能夠在事後進行驗證。我們的WCF客戶端缺失什麼?

(我知道,一個可以在ServerCertificateValidationCallback返回true繞過證書驗證,但這不是生產一個選項。)

+0

是否有沒有使用ServerCertificateValidationCallback的特殊原因? – alykhalid

+0

導航到IE中的服務URL時是否會收到證書驗證錯誤? – RoccoC5

回答

1

考慮所描述的情況,我懷疑你的IIS託管客戶端無法加載Verisign根證書。對於我來說,這種基於IIS的客戶端試圖訪問證書存儲的帳戶總是有點不清楚。它可能是您的域名服務帳戶用戶,可能是ASP.NET用戶,也可能是其他系統定義的帳戶。這通常會導致錯誤。

當您使用IE瀏覽服務時,毫無疑問用戶(您自己的憑據)能夠加載Verisign根證書並正確解析信任關係。

請:

  1. 確保在受信任的根當局本地計算機帳戶下存儲威瑞信根證書
  2. 讓你的客戶的的app.config指向正確的根證書從正確的商店加載。
  3. 您可能需要運行ProcessMonitor來確定哪個用戶正嘗試從商店中加載證書。