我正在尝试使用 .NET (4.5.2) 验证证书链X509Chain
,但我的链将无法验证,因为叶证书有一个关键扩展 (Apple Pay),可能无法被底层安全引擎识别Windows 提供 .NET 框架。
目前,我可以通过确保证书链的唯一错误是似乎由此扩展引起的错误来解决此问题:
- 叶子中的一项
ChainElementStatus
与Status
X509ChainStatusFlags.InvalidExtension
- 叶子中的
ChainElementStatus
一项Status
((X509ChainStatusFlags)0x08000000
有趣的是,IDE 给它起了名字HasNotSupportedCriticalExtension
,但枚举中不存在该值;我认为这是由于 .NET 框架的更改) - 叶子确实有一个
Critical
带有预期 OID 的扩展名
不过,这似乎很混乱。我宁愿告诉框架预先期待这个扩展,也不愿验证它是否由于正确的原因而失败。
我发现了这个关于如何使用 BouncyCastle 实现这一点的问题(尽管它涉及更改源),但无法找到使用内置X509Chain
类执行此操作的方法。
我也找不到将这个扩展“安装”到 Windows 以使其识别的方法。
有没有办法做到这一点?或者是剥离扩展还是让框架认识到它是一个比让它失败并准确验证它为什么会失败更糟糕的“坏主意”?