Tag: 代码签名

如何防止应用程序被标记为可疑

我有一个使用Visual Studio 2012用C#编写的.NET应用程序。我正在通过我自己的网站推广该应用程序,并可以下载它。 在Chrome中下载时,我收到一条消息,指出我的应用程序“通常不会下载并且可能很危险”。 此外,当我下载自己的应用程序并执行它时,Avast将其视为可疑并希望在沙箱中运行它。 无论如何我可以防止这种情况发生(没有购买签名证书)? 我不希望潜在用户遇到此问题。 编辑:我没有做任何恶意或在我的应用程序中使用任何钩子。 该应用程序只是一个简单的小工具,你可以在这里看到。

我应该如何在msbuild脚本中引用sn.exe?

我需要在构建完成后重新签署我的程序集(我已经完成了其他一些工作),所以我首先添加一个名为C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe的任务C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe 。 这必须适用于其他开发人员/环境,所以我希望我可以从该文件夹中复制sn.exe和sn.exe.config并将其存储在我们的代码存储库中,这样我就可以从已知的代码库中调用它的通用版本地点。 sn.exe在sdk目录之外独立崩溃,所以我想知道如何引用它而不知道它将在哪个路径下。 不同的人有不同的环境(x86 vs x64,不同的安装目录,不同的版本),所以我希望能够轻松地引用该工具的最新版本(或者任何版本)。 看起来像一个简单的工具,或许有另一种方法用另一个工具/命令/ msbuild任务签署程序集? 任何帮助,将不胜感激。

在C#中validationDLL

我有一个使用Castle Windsor来实现插件机制的exe。 我需要validation我加载的插件来自我(并不是一些恶意代码)。 我相信我需要用非对称密钥(可能是SNK?)来签署exe和dll。 首先是正确的,我该怎么做? 其次,我如何在exe中以编程方式validationdll来自可靠来源?

为什么我签名的点击一次应用程序说它有一个未知的发布者

我想创建一个易于安装的应用程序。 安装过程非常复杂(许多权限,防火墙规则,服务等)。 所以我决定用C#(.net 4)编写安装程序,然后使安装程序本身安装一次点击。 想法是用户会去网站,点击安装,我的安装程序将通过点击一次安装在他们的计算机上,然后它将运行,设置主程序。 为了使这个过程变得简单,我显然必须签署所有可执行文件。 我购买了一份Comodo代码签名证书,将其安装在我的证书商店中,并在VS Express 2012中勾选了“Sign a Click Once manifests”。我还包括一个运行后的构建步骤 SIGNTOOL.EXE sign /f TrumphurstCodeCertificate.pfx /p TimeClockSetup.exe 我清理了构建文件夹和部署网站中的所有内容,并运行了一个干净的构建。 我检查了build文件夹中可执行文件的属性,它显示为我发布的。 我将该程序发布到该网站,启动了另一台Windows 8计算机,导航到该网站,然后单击“安装”按钮。 我被提示Do you want to run or save setup.exe ,并选择运行。 然后我被提示setup.exe is not commonly downloaded and could harm your computer – 我点击了操作,它说This program might harm your computer 。 它确实说出版商是特朗普赫斯特有限公司,然后给了我选项,无论如何,我点击了。 然后我得到”Open File – Security […]

为什么我的根证书不受信任?

我从证书服务器发给自己一个代码签名证书。 我也从同一个证书服务器发给自己的根证书。 根证书存在于“受信任的根证书颁发机构”文件夹中的“当前用户”和“本地计算机”证书存储中。 我已使用signtool.exe向导成功签名了DLL: “C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe” signwizard .dll 但是,当我尝试validation我的DLL时,它validation失败并出现以下错误: “C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe” verify .dll SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider. SignTool Error: File not valid: .dll 为什么会这样? 我认为在受信任的根证书颁发机构文件夹中拥有根证书将validationDLL。

使用.NET获取有关EXE文件签名的详细信息

我正在尝试在托管代码中检索可执行文件的数字签名的详细信息。 我基本上需要证书的名称和发行人。 有一个来自Microsoft的C ++代码示例 ,它解释了C ++,但有没有类似的方式使用C#?

snk与代码签名证书

在我的组织中,我们使用具有强名称程序集的snk文件。 我们自己生成snk。 此外,我们在二进制文件上使用代码签名签名。 我们从Verisign获得了pfx。 这两个过程有什么区别? 是不是从Verisign也没有收到snk的问题?

代码签署可执行文件两次

简短的问题 如何从可执行文件(.EXE / .DLL)获取有关多个代码签名证书的信息? 预期答案 最终接受的答案应该提出一种获取C#所有证书的方法。 概念/伪代码是可以的,我不指望你写完整的源代码。 有关建议工具的中间答案,请参阅Security.StackExchange上的问题 。 很长的问题 我正在研究是否可以在插件(.DLL)上使用多个代码签名证书来检查它是否已经过官方测试。 这是程序: 插件DLL由供应商签名,就像任何其他应用程序一样 插件DLL进入测试实验室并进行一系列测试 测试实验室再次对插件DLL进行签名,以便使用DLL的应用程序可以确定它是否使用了经过测试的插件 似乎可以使用第二次签署DLL signtool /v /f /as 这可能有用的迹象: 文件大小增加 该工具打印成功消息 但是,有一些问题显示第二个签名: 虽然Windows资源管理器说“签名列表”,但它只显示一个证书 C# X509Certificate.CreateFromSignedFile()方法只能返回一个证书 目前我实际上是在EXE文件而不是DLL文件上尝试我的代码,但这应该不重要。 EXE已使用受信任的根证书和时间戳签名。 第二个签名是使用我自己的证书创建的, 遵循这些步骤,目前没有时间戳。 在问这个问题之前我做了些什么: 在Stackoverflow上搜索现有答案 在Google上搜索工具 到目前为止我发现的唯一相关问题是如何使用时间戳正确地进行双重签名,但它没有答案。

在下载时将用户特定数据嵌入到authenticode签名安装程序中

我有一个使用InnoSetup安装的Windows窗体应用程序,我的用户从我的网站下载。 他们将此软件安装到多台PC上。 该应用程序与Web API进行通信,该API必须能够识别用户。 我正在创建一个Web应用程序,用户可以登录并下载该应用程序。 我想在安装程序中嵌入一个通用唯一ID,这样他们就不必在安装后再次登录。 我希望他们下载并运行setup.exe,并让应用程序自行处理。 我正在考虑几个选项: 将用户特定的UUID嵌入到setup.exe中,并在Web服务器上按需执行代码签名 缺点:不知道怎么做? 将用户特定的UUID嵌入到安装程序文件的名称中(例如setup_08adfb12_2712_4f1e_8630_e202da352657.exe) 缺点:这不是很漂亮,如果重命名安装程序会失败 将安装程序和包含UUID的设置文件包装到自解压缩zip中 如何将用户特定数据嵌入到Web服务器上的已签名可执行文件中?

强名称validation失败

两台机器。 使用.NET 3.5和VS 2008 VC ++ SP1可再发行组件 一个使用两个签名DLL的​​exe,一个在C ++ / CLI中,另一个在C#中 exe在一台机器上加载并运行良好。 另一方面,我在C ++可执行文件中得到“强名称validation失败”(HRESULT 0x8013141A) 有任何想法吗?