我创建了一个 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 中并在网站中使用它。
最佳答案
微软有一个不错的白皮书/教程来说明如何做到这一点:
以下是它的长处和短处: 签署您的代码
向证书颁发机构申请证书。请参阅http://msdn.microsoft.com/workshop/security/authcode/certs.asp有关获取证书的说明。
获取用于签署文件和检查签名的最新工具。请参阅http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/crypto/cryptotools_4739.htm .
准备要签名的文件。如果您要签署任何 .exe、.ocx、.vbd 或 .dll 文件,则无需执行任何特殊操作。如果您要签署 .cab 文件,则必须将以下条目添加到 .ddf 文件并重新制作 .cab 文件:
.设置 ReservePerCabinetSize=6144
使用signcode.exe 对您的文件进行签名。以下是如何对文件进行签名的示例:
Signcode -prog myfilename -name displayname -info http://www.mycompany-inc-10.com - spc mycredentials.spc -pvk myprivatekey.pvk
测试您的签名:
- 要测试已签名的 .exe、.dll、.vbd 或 .ocx 文件,请运行 chktrust filename 其中 filename 是您签名的文件的名称。
- 要测试签名的 .cab 文件,请运行 chktrust -c cabfilename.cab 其中 cabfilename 是您签名的 .cab 文件的名称。
关于c# - 如何使用证书签署 ActiveX DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59886938/