C# 如何使用证书对ActiveX DLL进行签名

C# 如何使用证书对ActiveX DLL进行签名,c#,activex,certificate,C#,Activex,Certificate,我已经创建了一个通过COM公开的DLL,需要用证书签名 我创建了一个VisualStudio2008项目,它有一个类库,其中包含ActiveX对象的代码。然后,我创建了一个正在使用它的ASP.net页面: <script type="text/javascript"> var x = new ActiveXObject("Foo.Bar"); x.SomeMethod(); </script> var x=新的ActiveXObject(“Foo.B

我已经创建了一个通过COM公开的DLL,需要用证书签名

我创建了一个VisualStudio2008项目,它有一个类库,其中包含ActiveX对象的代码。然后,我创建了一个正在使用它的ASP.net页面:

<script type="text/javascript">
    var x = new ActiveXObject("Foo.Bar");

    x.SomeMethod();
</script>

var x=新的ActiveXObject(“Foo.Bar”);
x、 somethod();
我运行了这个站点,在安全方面遇到了一系列错误。我运行regasm/tlb/codebase foo.dll并以这种方式安装它。我还更改了IE中的一系列安全设置,允许我运行未签名的ActiveX控件,一切正常

现在我需要将其打包到CAB文件中,并使用证书进行签名,这样我就不必接触安全设置(用户也不必这样做)


有人能告诉我怎么做吗?我甚至不知道从哪里开始。我使用makecert.exe工具创建了一个自签名证书,但我不知道如何将证书绑定到DLL,或者如何将其打包到CAB中并在网站中使用。

Microsoft有一份关于如何执行此操作的白皮书/教程:

以下是它的长短: 签署你的代码

  • 向证书颁发机构申请证书。有关获取证书的说明,请参阅

  • 获取用于签名文件和检查签名的最新工具。请参阅

  • 准备要签名的文件。如果要签名任何.exe、.ocx、.vbd或.dll文件,则无需执行任何特殊操作。如果要签名.cab文件,则必须将以下条目添加到.ddf文件并重新生成.cab文件:

    .Set ReservePerCabinetSize=6144

  • 使用signcode.exe对文件进行签名。以下是如何对文件进行签名的示例:

    Signcode-prog myfilename-name displayname-info-spc mycredentials.spc-pvk myprivatekey.pvk

  • 测试您的签名:

    • 要测试签名的.exe、.dll、.vbd或.ocx文件,请运行chktrust filename 其中filename是您签名的文件的名称
    • 要测试签名的.cab文件,请运行chktrust-c cabfilename.cab 其中cabfilename是您签名的.cab文件的名称

  • 我在Visual Studio中有一个项目,它为我创建了一个CAB文件。我没有.ddf文件?那是什么?还有…有没有什么方法可以在Visual Studio中完全执行此操作而不必执行这些手动步骤?.ddf:ddf文件称为菱形指令文件,一个可以在记事本或任何文本编辑器中打开的文本文件。ddf包含spe将文件压缩到CAB文件中所需的cific信息;DDF文件本身未放入CAB文件中。注意:除非绝对必要,否则不应修改此文件。此链接已不存在:,我如何从证书颁发机构申请证书除了下面关于代码签名的正确声明之外,您的请注意,由于性能和并行问题,在.NET中编写ActiveX控件不是最佳做法。至少,您应该尝试编译到.NETv4 framework,因为此版本可以在单个进程中正确并行加载。