我正在.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命令可能存在的任何安全问题或丢失的标志。证书处理是一件很难做到的事情,这种回应主要集中在如何在拥有证书后对文件进行签名。