如何使用证书签署ActiveX DLL

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

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

 var x = new ActiveXObject("Foo.Bar"); x.SomeMethod();  

我运行该网站,并获得了一堆安全性错误。 我运行regasm / tlb / codebase foo.dll并以这种方式安装它。 我还在IE中更改了一堆安全设置,允许我运行未签名的ActiveX控件,一切正常。

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

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

微软有一个很好的白皮书/教程,介绍如何做到这一点:

MSDN文章

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

  1. 申请证书颁发机构的证书。 有关获取证书的说明,请参阅http://msdn.microsoft.com/workshop/security/authcode/certs.asp 。

  2. 获取用于签名文件和检查签名的最新工具。 请参阅http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/crypto/cryptotools_4739.htm 。

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

    .Set ReservePerCabinetSize = 6144

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

    Signcode -prog myfilename -name displayname -info http://www.mycompany-inc-10.com – spc mycredentials.spc -pvk myprivatekey.pvk

  5. 测试你的签名:

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