2012-02-08 75 views
16

我有一個具有消息安全性的WCF服務身份驗證具有消息安全性的WCF路由

我想爲負載平衡設置一個路由服務。

出於某種原因,這是行不通的,我已經啓用includeExceptionDetailInFaults看到異常,因此在客戶端我看到:未提供

客戶端證書。在ClientCredentials中指定客戶端證書 。

看來證書不是從router-> service轉發的。

當前客戶端/路由器/服務在同一臺機器上,所以我擁有所有的證書,但是如果我將它們部署在不同的機器上,路由器必須擁有私鑰嗎?另外,如果我想在路由器和服務之間建立一個不安全的連接(卸載安全性),我該如何提供主叫方的身份?

編輯: 對於所有的客戶機/路由器(服務器&客戶端)/ Server的安全配置相同:不提供

  <security mode="Message"> 
       <message clientCredentialType="Certificate" negotiateServiceCredential="false" 
        algorithmSuite="Default" establishSecurityContext="false" /> 
      </security> 
+6

可以顯示3個配置文件嗎? – 2012-02-15 13:15:47

回答

1

客戶端證書。在ClientCredentials中指定客戶端證書。

當服務證書與主機域名不匹配時,我看到了這個錯誤。

如果您仍然看到此問題,可以發佈一些配置條目嗎?

+0

證書與主機名稱不匹配。我現在使用'localhost'或IP。但它仍然應該工作..這是一個已知的錯誤? – Maxim 2012-03-15 14:17:06

+0

您可以嘗試[WinHttpCertCfg.exe](http://msdn.microsoft.com/en-us/library/windows/desktop/aa384088(v = vs.85).aspx)查看證書是否正確安裝使用密鑰的必要權限。 – 2012-03-15 14:29:10

+0

我不認爲這會有所幫助,我以管理員身份運行這些應用程序,以便我擁有足夠的權限。 – Maxim 2012-03-27 21:02:31

0

1)首先嚐試在代碼中設置客戶端的證書。

ChannelFactory<IService1> factory = 
      new ChannelFactory<IService1>("Service1_Endpoint"); 
factory.Credentials.ServiceCertificate.SetDefaultCertificate(
      System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, 
      System.Security.Cryptography.X509Certificates.StoreName.My, 
      System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, 
      "<SeriveCerificateName>"); 

如果你真的有證書有問題請您及時在應用程序啓動時得到的異常。

2)如果沒有例外,請檢查雙方的服務證書的指紋。