2011-09-28 70 views
4

我有一個使用TCP綁定的自託管WCF服務,現在嘗試在SSL上進行分層。SSL服務器證書存在WCF的一個名稱?

我從CA獲得的證書有「主題備用名稱」兩個值:

www.mysite.com 
mysite.com 

我只想提出「mysite.com」到WCF客戶端,不知何故這www.mysite.com( CA補充說,我沒有要求www.mysite.com)。

我正在使用下面的代碼服務器端。我需要做些什麼才能「隱藏」www.mysite.com地址?

svc.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.CurrentUser , StoreName.My , X509FindType.FindBySubjectName , "mysite.com"); 

當客戶端連接,因此,現在我得到

「身份檢查失敗傳出消息,遠程端點的預期DNS身份是‘mysite.com’,但遠程端點提供DNS聲明'www.mysite.com'。如果這是一個合法的遠程端點,您可以通過在創建通道代理時明確指定DNS標識「www.mysite.com」作爲EndpointAddress的標識屬性來解決此問題。「

我不想要e客戶知道關於www.mysite.com的任何信息。我只希望他們使用服務器提供的內容,我希望服務器只提供mysite.com。

+1

這是一個錯誤:http://connect.microsoft.com/VisualStudio/feedback/details/683174/wcf-x509-certificate-validation-only-checks-last-dnsname-in-subject-alternative-name – UserControl

回答

0

爲什麼要隱藏它?具有SAN替代品的證書意味着它對所有這些FQDN都是有價值的,因此它可以在www.mysite.com和mysite.com上運行。

另外,從你打電話給SetCertificate的外觀,證書的主題名稱是你想要的,mysite.com,這是首先檢查的內容。

錯誤消息的全文進來

身份檢查的形式失敗傳出消息。遠程端點的預期DNS身份 是「X」,但遠程端點提供的DNS 要求「Y」

現在,這個具有什麼做的證書,但IIS主機配置爲,或者在自託管的情況下,主機/機器Windows配置爲。您可以通過爲endpoint添加新的配置設置來覆蓋WCF將使用的主機;

<identity> 
    <dns value="mysite.com"/> 
</identity> 

或在創建端點時將其設置爲代碼。

+0

我想隱藏它,因爲我的客戶端應用程序正在尋找mysite.com而不是www.mysite.com。我編輯了我的原始文本以包含完整的錯誤消息。謝謝。 – Snowy