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

我创建了一个通过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工具创建了一个自签名证书,但是我不确定如何将证书绑定到DLL或如何将其全部打包到CAB中并在网站中使用它。

参考方案

Microsoft有一个不错的白皮书/教程,介绍如何执行此操作:

MSDN Article

这是它的长短:
签名代码

向证书颁发机构申请证书。有关获取证书的说明,请参见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签名文件。以下是如何签名文件的示例:

签名代码-prog myfilename-名称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文件的名称。

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…

Json到php,json_decode返回NULL - php

我正在用PHP进行JSON解析器的一些API,用于存储有关遗产的信息。我在解析时遇到问题,因为它返回的是NULL值而不是数组或对象。简单的JSON代码可以很好地解析,但是可以这样:{"success":true,"totalCount":1,"data":[{"id":99694…

您如何在列表内部调用一个字符串位置? - python

我一直在做迷宫游戏。我首先决定制作一个迷你教程。游戏开发才刚刚开始,现在我正在尝试使其向上发展。我正在尝试更改PlayerAre变量,但是它不起作用。我试过放在列表内和列表外。maze = ["o","*","*","*","*","*",…