受信任的pfx证书不能与InternalsVisibleTo属性一起使用

时间:2016-05-04 06:40:50

标签: c# pfx internalsvisibleto

我从Comodo CA获得了一个受信任的证书,并且很难让它使用InternalsVisibleTo属性。 我收到警告说组件无效且无法解决。 我使用X509Certificate.GetPublicKeyString()检索了公钥,并将其放入assemblyinfo。

[assembly:System.Runtime.CompilerServices.InternalsVisibleTo("Assemblyname,PublicKey=MyPublicKey"]

到目前为止,我们使用过不受信任的证书,它可以正常使用。我注意到,受信任证书(.pfx)的PublicKey长度为540个字符,而我们的不受信任(.snk)只有320个。

我的错误在哪里?

此外,我无法使用项目设置选择我的.pfx来签名。后期工作。当使用项目设置时,它告诉我它无法找到证书和私钥。

1 个答案:

答案 0 :(得分:2)

如果不尝试自己做同样的事情,很难说出问题是什么。也许X509Certificate.GetPublicKeyString()返回的公钥格式不是InternalsVisibleTo期望的格式。但是,您可以使用sn(强名称工具),它仅用于处理强名称密钥。

它位于C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin(SDK \系统驱动器等的数量可能会有所不同,但您明白了这一点。)

使用此命令首先导出公钥(如果pfx受密码保护,将询问密码):

sn -p YourComodoCert.pfx YourComodoCert.snk

然后通过以下方式将公钥导出为字符串:

sn -tp YourComodoCert.snk > YourComodoCert_pub.txt

使用文本编辑器打开YourComodoCert_pub.txt,您将找到"公钥是"部分 - 从那里复制密钥并在InternalsVisibleTo中使用。