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



在icertifatepolicy接口的MSDN示例中,有一个枚举,它列出了可以通过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状态码文档中。

我花了很长时间试图弄清楚这一点,并最终能够找到一个VMware c#文件,其中包含不同代码的解释:

CertEXPIRED
所需证书不在有效期内

CertVALIDITYPERIODNESTING
证书链的有效期嵌套不正确

CertROLE
一个只能用作最终实体的证书被用作CA,反之亦然

CertPATHLENCONST
违反了证书链中的路径长度约束

CertCRITICAL
证书

中存在标记为"critical"的未知类型扩展。

CertPURPOSE

证书被用于不允许的目的。

CertISSUERCHAINING
给定证书的父证书实际上没有颁发该子证书

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

CertUNTRUSTEDROOT
正确处理的证书链,但终止于不受信任提供者信任的根证书

CertCHAINING
在某个链接应用程序中,证书链没有像它们应该的那样链接

CertREVOKED
证书被其颁发者显式吊销

CertUNTRUSTEDTESTROOT
根证书是一个测试证书,策略设置不允许测试证书

CertREVOCATION_FAILURE
撤销程序无法继续-无法检查证书

CertCN_NO_MATCH
证书的CN名称与传递的值

不匹配

CertWRONG_USAGE
证书对请求的用法无效

CertUNTRUSTEDCA
不受信任的CA

最新更新