CheckValidationResult certificateProblem参数的不同状态错误代码代表什么?

时间:2013-05-10 22:53:31

标签: c# ssl certificate

在ICertificatePolicy界面的MSDN Example中,有一个枚举列出了可以通过ValidationCallback返回的所有可能的状态错误代码:

public enum CertificateProblem : long
{
        CertEXPIRED                   = 0x800B0101,
        CertVALIDITYPERIODNESTING     = 0x800B0102,
        CertROLE                      = 0x800B0103,
        CertPATHLENCONST              = 0x800B0104,
        CertCRITICAL                  = 0x800B0105,
        CertPURPOSE                   = 0x800B0106,
        CertISSUERCHAINING            = 0x800B0107,
        CertMALFORMED                 = 0x800B0108,
        CertUNTRUSTEDROOT             = 0x800B0109,
        CertCHAINING                  = 0x800B010A,
        CertREVOKED                   = 0x800B010C,
        CertUNTRUSTEDTESTROOT         = 0x800B010D,
        CertREVOCATION_FAILURE        = 0x800B010E,
        CertCN_NO_MATCH               = 0x800B010F,
        CertWRONG_USAGE               = 0x800B0110,
        CertUNTRUSTEDCA               = 0x800B0112
}

这些不同的状态代码代表什么?它们不在链接引用的SSPI状态代码文档中。

1 个答案:

答案 0 :(得分:2)

我花了很长时间试图解决这个问题,最后能够找到VMware C# file包含不同代码的解释:

<强> CertEXPIRED
所需证书不在其有效期内

<强> CertVALIDITYPERIODNESTING
认证链的有效期未正确嵌套

<强> CertROLE
只能用作终端实体的证书可用作CA,反之亦然

<强> CertPATHLENCONST
违反了认证链中的路径长度约束

<强> CertCRITICAL
标记为“严重”的未知类型的扩展名存在于证书

<强> CertPURPOSE
证书的使用目的不是允许的目的

<强> CertISSUERCHAINING
事实上,给定证书的父母没有签发该子证书

<强> CertMALFORMED
证书缺失或重要字段的值为空,例如主题或颁发者名称

<强> CertUNTRUSTEDROOT
认证链正确处理,但终止于信任提供商不信任的根证书

<强> CertCHAINING
一系列证书没有按照链接的特定应用链接进行链接

<强> CertREVOKED
证书已由其颁发者

明确撤销

<强> CertUNTRUSTEDTESTROOT
根证书是测试证书,策略设置不允许使用测试证书

<强> CertREVOCATION_FAILURE
撤销过程无法继续 - 无法检查证书

<强> CertCN_NO_MATCH
证书的CN名称与传递的值

不匹配

<强> CertWRONG_USAGE
证书对请求的用法无效

<强> CertUNTRUSTEDCA
不受信任的CA