【发布时间】:2011-12-06 11:54:22
【问题描述】:
我们正在将一个可执行文件部署到我们网络之外的合作伙伴站点。可执行文件将从文件夹中动态加载程序集以执行某些任务。
可执行文件将使用我们的 CA 颁发的证书进行签名和时间戳。我想确保可执行文件加载的程序集已由我们的 CA 签名。如何使用 C# 执行此操作?
【问题讨论】:
标签: c# security code-signing x509certificate x509
我们正在将一个可执行文件部署到我们网络之外的合作伙伴站点。可执行文件将从文件夹中动态加载程序集以执行某些任务。
可执行文件将使用我们的 CA 颁发的证书进行签名和时间戳。我想确保可执行文件加载的程序集已由我们的 CA 签名。如何使用 C# 执行此操作?
【问题讨论】:
标签: c# security code-signing x509certificate x509
您需要比较 X509Certificate2 类对应实例的IssuerName 属性。请注意, IssuerName 是对其属性必须进行检查和比较的复杂对象的引用。
【讨论】:
根据证书中的内容,可以通过多种方式选择颁发者。 总结起来就是Exact match、Key match、name match,从严格到少的顺序。
在精确匹配中,(AKI) 授权密钥标识符扩展与颁发者的主题匹配。此 AKI 可以包含发行者的名称和序列号。
在密钥匹配中,AKI 仅具有颁发证书的 pub 密钥的哈希值。匹配仅涉及将 AKI 与颁发证书的 SKI 进行比较。
名称匹配(如果不存在 AKI)是限制最少的。只需将颁发者名称与颁发证书的主题名称进行比较即可。
作为建议,我建议至少有 AKI。
【讨论】: