2014-02-25 270 views
1

我有這樣的代碼:使用自簽名證書

X509Chain x509Chain = new X509Chain(); 
x509Chain.ChainPolicy.ExtraStore.Add(certificate1); 
x509Chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck; 
x509Chain.ChainPolicy.RevocationFlag = X509RevocationFlag.ExcludeRoot; 
x509Chain.Build(certificate2); 

foreach (X509ChainElement x509ChainElement in x509Chain.ChainElements) 
{ 
    Log("Name: " + x509ChainElement.Certificate.GetNameInfo(X509NameType.SimpleName, false)); 
    foreach (X509ChainStatus x509ChainStatus in x509ChainElement.ChainElementStatus) 
     Log("status: " + x509ChainStatus.StatusInformation); 
    if (x509ChainElement.ChainElementStatus.Length != 0 && (x509ChainElement.Certificate.Thumbprint != certificate1.Thumbprint))// || x509ChainElement.ChainElementStatus[0].Status != X509ChainStatusFlags.UntrustedRoot)) 
        return false; 
} 

我不能設法得到它安裝證書如果是自簽名的(或至少我認爲它沒有得到安裝)。在狀態日誌消息我得到這個:

證書鏈處理,但終止於根證書 這是不信任提供

我怎麼能忽略檢查是否可信?

回答

-1
+0

如果我添加這個:x509Chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;或你提到的國旗我仍然得到這個消息,但x509Chain.Build()返回true。 – Cornwell

+0

這也將完全禁用權威檢查,即。 「PartialChain」錯誤仍然會導致錯誤。比較的答案http://stackoverflow.com/questions/27307322/verify-server-certificate-against-self-signed-certificate-authority?rq=1 – Divide