基于Self-Sign.Net窗口的应用程序



我正在.Net中开发基于窗口的应用程序。我已经创建了应用程序的exe,现在我想对exe进行自签名。我不想购买任何证书。有什么方法可以在.Net中对exe进行自签名吗?我搜索了很多,但没有找到任何方法来自我签名exe

.NET二进制文件可以通过两种不同的方式进行签名:使用强名称和常规Windows文件签名。自签名只能用于测试!永远不要将自签名文件发送给您的客户!

使用强名称签名

这是一种验证程序集标识和包含类型的方法。(更多信息见官方文档(

如果您使用的是Visual Studio,则可以在项目属性的"签名"选项卡中使用强名称进行签名。还有一个命令行工具叫做";CCD_ 5";,可以在Visual Studio开发人员命令提示符(al /out:assemblyName moduleName /keyfile:keyfileName(中找到。

对于任何一种方法,您都需要一个密钥文件,可以使用sn.exe工具(在Visual Studio Developer命令提示符中找到(生成:sn -k keyPair.snk

Windows二进制签名

我找不到官方名称,这就是为什么我可能会用多种方式提及它;这是你可以在文件属性选项卡中看到的数字签名

对于这个,你需要signtool.exe,它可以在Windows SDK或Visual Studio Developer命令提示符中找到(更多信息请参阅官方文档(。

signtool sign /f MyCert.pfx /p MyPassword /fd SHA256 MyApp.exe将使用MyCert.pfx(受密码保护(对MyApp.exe进行签名。

要在Windows上生成pfx证书,您可以使用openssl(还有其他工具,请选择您喜欢的(:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem将为有效期为3650天的证书和私钥生成pem文件。

openssl pkcs12 -export -out MyCert.pfx -inkey key.pem -in cert.pem将生成pfx文件。

我不是安全专家,所以请原谅openssl命令可能存在的任何安全问题或丢失的标志。证书处理是一件很难做到的事情,这种回应主要集中在如何在拥有证书后对文件进行签名。

最新更新