【问题标题】:SNK getting Unknown error (8013141e)SNK 出现未知错误 (8013141e)
【发布时间】:2014-04-02 14:49:33
【问题描述】:

在尝试使用我生成的 SNK 文件并在 Visual Studio 2013 中使用它来签署我的程序集时,我不断收到此错误:

CSC:错误 CS1548:签署程序集时出现加密错误 'd:\temp\MyDell.dll' -- '错误签名程序集 -- 未知错误 (8013141e)'

我已将 signtool 与我的 PFX 和密码一起使用,一切正常,它对程序集进行签名。所以 PFX 似乎不错。

我正在使用这个代码,我以前用它来生成我的 SNK,它一直有效:

       X509Certificate2 cert = new X509Certificate2(@"c:\temp\FILENAME.pfx", "PASSWORD", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
        RSACryptoServiceProvider provider = (RSACryptoServiceProvider) cert.PrivateKey;

        byte[] array = provider.ExportCspBlob(!provider.PublicOnly);

        using (FileStream fs = new FileStream(@"c:\temp\FILENAME.snk", FileMode.Create, FileAccess.Write))
        {
            fs.Write(array, 0, array.Length);
        }

有人知道我为什么会收到这个错误吗?有没有更好的方法来生成 SNK 文件?

谢谢

【问题讨论】:

  • 这不是一个完全未知的错误,0x8013141e 是 CORSEC_E_INVALID_PUBLICKEY。

标签: c#


【解决方案1】:

我们在我工作的公司遇到了同样的问题。错误生成的 PFX 文件会出现此问题。在生成 PFX 时记住 -keysig 参数很重要。

openssl pkcs12 -export -inkey private.key -in public.crt -out FILENAME.pfx -keysig

否则默认情况下,它似乎使用用于 SSL/Exchange 身份验证的 -keyex 参数。

您可以在创建时通过检查私钥的 KeyExchangeAlgorithm 在代码中检查这一点。在我的情况下,发生错误时是 RSA-PKCS1-KeyEx,但在工作时为空。

X509Certificate2 cert = new X509Certificate2(@"c:\temp\FILENAME.pfx", "PASSWORD", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
RSACryptoServiceProvider provider = (RSACryptoServiceProvider)cert.PrivateKey;
if (provider.KeyExchangeAlgorithm != null)
    throw new Exception("Supplied file has not been generated for signing using the -keysig argument with openssl");
byte[] array = provider.ExportCspBlob(!provider.PublicOnly);

using (FileStream fs = new FileStream(@"c:\temp\FILENAME.snk", FileMode.Create, FileAccess.Write)) {
    fs.Write(array, 0, array.Length);
}

【讨论】:

    【解决方案2】:

    Visual Studio 带有一个用于创建 snk 文件的对话框。

    看看here。

    要访问此对话框,请在解决方案资源管理器中选择一个项目节点,然后在“项目”菜单上单击“属性”。当项目设计器出现时,单击签名选项卡。在签名页面上,选择签署程序集,然后从选择强名称密钥文件下拉列表中进行选择。

    【讨论】:

    • @user3368242:找到解决方案有运气吗?
    猜你喜欢
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多