2011-06-15 571 views
2

我想使用X509證書向我的WCF服務驗證用戶身份。我將我的服務設置爲使用SSL並進行所有相關的WCF配置。當我嘗試使用我的服務,我得到以下錯誤:WCF身份驗證-X509證書

The remote certificate is invalid according to the validation procedure. 

如果我把我的證書(自簽名),並把它添加到信任的人,那麼這個錯誤消失。我相信這意味着我需要向我的服務的所有(外部)消費者提供我的證書。有沒有辦法解決?

+0

我的安全配置如下: <安全模式= 「TransportWithMessageCredential」><傳輸clientCredentialType = 「證書」 proxyCredentialType = 「無」 的境界= 「」/><消息clientCredentialType =「證書「algorithmSuite =」Default「/> – user472292 2011-06-15 18:24:10

回答

0

由於我們爲開發目的使用自簽名證書,因此我必須重寫證書的驗證。我的代碼是:

if (validateServerCertificate) 
     { 
      ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate); 
     } 
private static bool ValidateRemoteCertificate(object sender, 
                X509Certificate certificate, 
                X509Chain chain, 
                SslPolicyErrors policyErrors) 
    { 
     return true; 
    } 
1

所有證書都由證書頒發機構(CA)進行驗證。

就你而言,我懷疑你的CA不可信。啓動MMC併爲本地計算機添加證書管理器。受信任根CA下的Se(不記得確切的單詞)。

自簽證書意味着證書的CA與證書本身相同。

還了解如何使用證書:您是使用它們來識別您的客戶端,還是用於SSL加密傳輸級別的目的?

如果你想使用證書進行許多不同的客戶,我強烈建議你看一看公共PKI服務的公司,如威瑞

+1

證書由CA頒發(基於CSR創建,證書籤名請求和簽名),未經過」驗證「。當然,OP使用不受信任的自簽名證書。 – 2011-06-15 18:42:04

0

自簽名證書也不能被信任(除非用戶明確相信他們或一些代碼這樣做)。您確實需要從Thawte,GlobalSign,Comodo(InstantSSL)等已建立的CA購買證書。我們使用GlobalSign和Comodo,每個都有自己的優勢。您需要的是爲您的服務器的域名發佈的常規「SSL證書」(因爲他們稱之爲該名稱不正確)。