delphi - 加载签名的 ocx 时 Internet Explorer 崩溃

标签 delphi delphi-xe

我有一个在 Delphi 中编码的 .ocx/ActiveX 库。我已经在以下环境中彻底测试了这个库:

Windows XP SP3 - IE6 Windows XP SP3 - IE7 Windows XP SP3 - IE8 Windows 7 Ultimate 64 位 - IE 9(32 位)

该库与我的 IIS 服务器交互,然后加载 MsRdpClient 库接口(interface),然后在浏览器客户端区域内运行 RDP session 。效果很好。

现在是部署时间,将部署到其网络上的客户站点。用户将通过使用 VPN 等访问客户网络来访问/下载 ocx 到他们的 PC。

我们从 GoDaddy 购买了代码签名证书。使用Microsoft Signtool,我已经成功签署了ocx。这是我使用的过程:

我从 GoDaddy 下载了我的证书。 我在 IE 中安装了证书。 我将证书从 IE 导出到 .pfx 文件、私钥等。 我使用signtool签名成功签署了证书 我还测试了使用较旧的 Signtool (6.1) 和 pvk 实用程序对证书进行签名,创建了一个 pvk 文件并将其与从 GoDaddy 收到的 .spc 文件配对。

我第一次尝试在网页中加载 ocx 时,系统会提示我接受来自可信机构的对象。然后 IE 就会崩溃!

第一次/一旦加载证书并批准对象后,一旦我尝试使用 ActiveX 运行我的网站,IE 7、8 和 9 就会崩溃!

我没有收到任何错误消息,浏览器只是“消失”!

现在是部署时间,我没有从 IE 获得任何有关正在发生的情况的信息。任何帮助将不胜感激!

最佳答案

对文件进行代码签名时,文件内容会发生更改,并且文件长度会增加。签名已插入到文件中。

如果程序中有防篡改代码,只需对文件进行签名即可触发。例如,如果您使用 EurekaLog,请确保禁用“检查文件损坏(防破解)”选项,否则您的程序将仅仅因为签名修改了文件而崩溃,并显示错误“此文件已破解”。

通常,您应该在对应用程序进行签名之前禁用任何此类防篡改代码,并使用 Windows API 来验证签名的有效性。如果文件签名后被篡改,则签名无效。 Eldos SecureBlackBox 组件具有从应用程序内部验证签名的功能。

此外,请考虑在签署文件时使用时间戳。如果没有时间戳,一旦您的代码签名证书过期,签名就会过期。有了时间戳,即使代码签名证书过期,签名也会继续存在(除非您吊销证书)。

关于delphi - 加载签名的 ocx 时 Internet Explorer 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789307/

相关文章:

delphi - 是否可以将FileAge设置为毫秒?

Delphi 获取具有滚动条的组件的实际全高/宽度

string - 需要一个例程来检测相似但不相同的字符串

delphi - 如何制作带有透明图形的firemonkey按钮,并使其成为默认样式

Delphi XE - System.Pos 函数的更快替代方案

performance - 可以使用SIMD或其他方法加快Delphi 6位图修改代码的速度吗?

mysql - Delphi XE5 FireDAC 错误 : Cannot load vendor library [libmysql. dll 或 libmysqld.dll]

delphi - FireMonkey 并显示所有者表单的模式对话框中心

delphi - WinHttp Delphi 包装器

delphi - 如何在同时处理多个位图的同时提高性能?