如何使用c#确定证书是否由同一CA颁发

本文关键字:CA 颁发 是否 证书 何使用 | 更新日期: 2023-09-27 18:16:50

我们正在将一个可执行文件部署到我们网络之外的合作伙伴的站点。可执行文件将动态地从文件夹加载程序集以执行某些任务。

可执行文件将使用我们的CA颁发的证书进行签名和时间戳。我想确保由可执行文件加载的程序集已由我们的CA签名。我如何使用c#做到这一点?

如何使用c#确定证书是否由同一CA颁发

需要比较X509Certificate2类对应实例的IssuerName属性。注意,IssuerName是一个复杂对象的引用,它的属性必须被检查和比较。

根据证书中存在的内容,有几种选择颁发者的方法。总而言之,这些匹配是精确匹配,关键匹配,名称匹配,从严格到不严格的顺序。

在精确匹配中,(AKI)授权密钥标识符扩展与颁发者的主题相匹配。此AKI可以包含发行者的名称和序列号。

在Key match中,AKI只有颁发证书的公开密钥的哈希值。匹配只涉及将AKI与颁发证书的SKI进行比较。

如果AKI不存在,则名称匹配是限制最少的。只需将颁发者名称与颁发证书的主题名称进行比较即可。

作为一个建议,我建议至少有AKI。