我有一个用Delphi编写的.ocx / ActiveX库。我已在以下环境中对此库进行了全面测试:
Windows XP SP3 - IE6 Windows XP SP3 - IE7 Windows XP SP3 - IE8 Windows 7旗舰版64位 - IE 9(32位)
库与我的IIS服务器交互,然后加载MsRdpClient库接口,然后在浏览器客户端区域内运行RDP会话。效果很好。
现在是部署时间,将部署到他们网络上的客户站点。用户将通过使用VPN等访问客户网络来访问/下载ocx到他们的PC。
我们从Go Daddy购买了代码签名证书。使用Microsoft signtool,我已经成功签署了ocx。这是我使用的过程:
我从GoDaddy下载了我的证书。 我在IE中安装了证书。 我从IE导出证书到.pfx文件,私钥和所有。 我使用signtool sign成功签署了证书 我还测试了使用旧的signtool(6.1)使用signtool signwizard和pvk实用程序签署证书,创建了一个pvk文件并将其与从GoDaddy收到的.spc文件配对。
我第一次尝试在网页中加载ocx时,系统会提示我从受信任的机构接受该对象。然后它崩溃IE!
第一次/一旦加载证书并且对象被批准后,一旦我尝试使用ActiveX运行我的站点,IE 7,8和9就会崩溃!
我没有收到任何错误消息,浏览器只是“消失”!
这是部署时间,我没有任何关于IE发生的信息。任何帮助都会非常感激!
答案 0 :(得分:4)
代码签名文件时,文件内容会发生变化,文件长度会增加。签名将插入文件中。
如果程序中有防篡改代码,只需签署文件即可触发。例如,如果您使用的是EurekaLog,请确保禁用“检查文件损坏(防破解)”选项,否则您的程序将因“签名已修改文件”而导致错误“此文件被破解”崩溃。 / p>
通常,您应在签署应用程序之前禁用任何此类防篡改代码,并使用Windows API验证签名的有效性。如果文件在签名后已被篡改,则签名将无效。 Eldos SecureBlackBox组件具有在应用程序内验证签名的功能。
另外,请考虑在签名文件时使用时间戳。没有时间戳,一旦您的代码签名证书过期,签名将过期。使用时间戳,签名仍然存在,甚至超过代码签名证书的到期时间(除非您撤销证书)。