在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状态代码文档中。
答案 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