2012-01-13 83 views
0

設置是我在同一個HTTPS網站上使用相同的應用程序池和證書託管2個類似的WCF應用程序。WCF:無法爲localhost的SSL/TLS安全通道建立信任關係

現在,第一個WCF應用程序在某個函數上調用第二個WCF。在請第一位第二WCF後,異常得到投擲

"Could not establish trust relationship for the SSL/TLS secure channel..." 

我見過類似的問題,但不同的是,我的工作應該因爲它使用相同的證書。可能會發生什麼?

編輯:

基本上這裏的第二個WCF是如何調用第一WCF的方法中,

public void SomeMethod(string parameter) 
{ 
    SecondServiceClient svc2 = new SecondServiceClient ("BasicHttpBinding_IService2"); 
    svc2.DoWork(parameter); 
} 

第一WCF的第二個WCF的web.config端點有這樣的事情:

... 
<client> 
    <endpoint address="https://192.168.1.100/MyService2/Service2.svc" 
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService2" 
    contract="SecondService.IService" name="BasicHttpBinding_IService" /> 
</client> 
... 

HTTPS很難玩,我說。

+0

相同證書的使用在信任鏈中意味着什麼。顯示你如何致電該服務。 – 2012-01-13 15:20:41

+0

您是否嘗試使用類似「https:// localhost/...」的URL訪問第二個服務,並將該證書頒發給'localhost'? – Bruno 2012-01-13 15:44:05

+0

@布魯諾是的。我已經嘗試'localhost'和一個內部IP地址與他們各自的證書無濟於事。 – Bahamut 2012-01-13 16:39:24

回答

6

客戶端訪問的HTTPS網站需要覈實有關其證書兩件事情:

  1. 他們必須檢查證書是真實的,可信機構簽發(有效期限爲這個目的)。這是在RFC 5280中指定的PKI模型。
  2. 他們必須檢查證書是否發給他們嘗試聯繫的實體。這是主機名稱驗證,在RFC 2818 Section 3.1(以及後面的RFC 6125)中指定。

通過將客戶端集配置爲信任錨(可信CA證書)來解決PKI驗證問題。如果您的證書是由您的操作系統默認信任的CA頒發的,則您不需要執行任何操作。如果您必須自己安裝CA證書,請確保它也在機器的商店(不僅僅是用戶的商店)中啓用,因爲您的應用程序可能作爲服務(而不是特定用戶)運行。

身份驗證依賴於您嘗試聯繫的身份(主機名或IP地址)以及證書頒發給的身份。他們必須匹配。這些規則是在RFC 2818 Section 3.1,特別是:

如果類型DNSNAME的subjectAltName擴展存在,必須 被用作標識。否則,務必使用證書的主題字段中的(最具體的)通用名稱 字段。雖然 使用通用名稱是現有的慣例,但它已被棄用,並鼓勵證書頒發機構改爲使用dNSName。

[...]

在一些情況下,URI被指定爲IP地址,而不是一個 主機名。在這種情況下,iPAddress subjectAltName必須在證書中出現 ,並且必須與URI中的IP完全匹配。

您的服務器可能是內部響應多個主機名和IP地址,例如www.example.com192.168.1.100localhost127.0.0.1。您的證書必須對您嘗試與之聯繫的主機/ IP地址有效。

它很少很有意義的發行localhost127.0.0.1證書,所以我懷疑這是你所擁有的,而且也沒有點配置客戶端與https://localhost/...這個原因。

可能有一個192.168.1.100的證書,但它必須有一個IP(非DNS)這個IP地址的主題備用名稱條目。 (考慮到這是一個私人地址,這是不太可能的情況。)

您可能需要配置您的服務以使用可見的主機名(可能頒發證書的主機名):www.example.com(或不管是什麼)。如果您將此服務託管在反向NAT後面,可能會出現問題。

+0

我已經使用mmc將證書添加到受信任的根證書中,但我會嘗試雙重檢查它。至於本地主機/ IP地址的東西,我可以使用任何兩種格式的端點訪問這兩個Web服務。我會嘗試重新創建證書,分配給池並再次測試,以檢查問題的可能原因。 – Bahamut 2012-01-13 17:59:58

+0

確保該證書在機器商店中受信任。如果您使用網絡瀏覽器測試您的服務,他們可以更加輕鬆地進行IP SAN檢查。 – Bruno 2012-01-13 18:03:25

相關問題