c# - 如何使用证书签署 ActiveX DLL

标签 c# activex certificate

我创建了一个 DLL,并通过 COM 公开该 DLL,我需要使用证书对其进行签名。

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

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

    x.SomeMethod();
</script>

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

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

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

最佳答案

微软有一个不错的白皮书/教程来说明如何做到这一点:

MSDN Article

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

  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 文件:

    .设置 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 文件的名称。

关于c# - 如何使用证书签署 ActiveX DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59886938/

相关文章:

C# 使用FileStream读取 'Zip'文件

c# - 从线程调用的 ActiveX DLL

Delphi 使用 Word ActiveX 将 doc 转换为 pdf

java - 如何使用 Java 创建 X509 证书?

iOS开发证书发行

c# - Microsoft Bot Framework - Teams 和 Skype for Business 不支持自适应卡版本

c# - Azure WebJobs QueueTrigger 未触发

c# - VSTO:操作 COM 对象 ("one dot good, two dots bad")

delphi - 如何在 Delphi XE4 中注册 Active X .ocx 库

java - Java 应用程序中的 PKIX 路径构建失败