Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# snk与代码签名证书_C#_Certificate_Code Signing_Strongname_X509 - Fatal编程技术网

C# snk与代码签名证书

C# snk与代码签名证书,c#,certificate,code-signing,strongname,x509,C#,Certificate,Code Signing,Strongname,X509,在我的组织中,我们使用具有强名称程序集的snk文件。我们自己生成snk 此外,我们在二进制文件上使用代码签名。我们从Verisign获得pfx 这两个过程的区别是什么 snk也没有从Verisign收到,这不是一个问题吗 snk和pfx用于两种不同的用途。snk用于强命名,强命名使用密钥对唯一标识程序集。pfx用于代码签名,这是一个类似的过程,但旨在防止恶意篡改公开分发的程序集。在程序集上同时使用强名称和签名 只要保持私钥的安全,就可以生成自己的SNK文件。从Verisign获得的PFX文件允

在我的组织中,我们使用具有强名称程序集的snk文件。我们自己生成snk

此外,我们在二进制文件上使用代码签名。我们从Verisign获得pfx

  • 这两个过程的区别是什么
  • snk也没有从Verisign收到,这不是一个问题吗

snk和pfx用于两种不同的用途。snk用于强命名,强命名使用密钥对唯一标识程序集。pfx用于代码签名,这是一个类似的过程,但旨在防止恶意篡改公开分发的程序集。在程序集上同时使用强名称和签名


只要保持私钥的安全,就可以生成自己的SNK文件。从Verisign获得的PFX文件允许您使用第三方保护的密钥对程序集进行签名。这是一个额外的安全层,让程序集的用户知道它没有被篡改。

所以snk只是将一个私有公钥对绑定到程序集,而不管密钥所有者身份如何,以便允许强引用?这意味着,如果我(用户)信任exe,我可以信任所有引用。我该如何信任exe,代码签名是从这里开始的吗?在这种情况下,我应该只对exe进行签名,而不对其他程序集进行签名,因为我知道它们没有被篡改。这是正确的吗?根本区别在于SNK签名由个人完成,并支持向GAC添加程序集。与SSL一样,代码签名由受信任、绑定的第三方进行中介。私钥由Verisign持有,公钥由Verisign发布(在您的情况下)。在这两种情况下,程序集都是用私钥“签名”的,并用公钥进行验证。我要说的是,用snk签名可以保证不会被篡改(通过哈希检查),然而,使用pfx签名可以保证代码确实来自给定的源(购买证书时由Verisign验证)。此外(我在这里可能是错的),我认为与pfx签约使与snk签约变得多余。以下是对我之前关于pfx的评论的确认,该评论产生了snk功能的超集:@DaveSwersky:这个答案不太正确。PFX只是SNK的密码保护版本。这意味着PFX文件可以重新分发,但对于没有密码的伪造者来说没有任何用处。如果SNK或PFX文件仅保存在开发人员手中,那么它们同样“安全”。如果SNK被重新分发,它的“无篡改”保证将失效,尽管它保留了您提到的唯一标识的好处(也可以放在GAC中)。