解决 REQUIREDDINSIG 安全策略的警告

打开包含已签名加载项的文件时,可能会看到以下警告消息:

警告: 数字签名有效,但来自尚未选择信任的发布者。

以下情形可能会触发此类警告:

  1. 启用“requireaddinsig”安全策略时。

    注意

    此注册表策略要求用户仅使用由受信任的发布者签名的加载项。

  2. 系统更新后。

说明

这是一个已知问题。 启用 'requireaddinsig' 安全策略后,系统会先验证所有签名证书是否都存储在 受信任的发布者 存储中,然后再加载加载项或任何关联的动态链接库 (DLL) 。

这些证书不仅用于签署加载项,还用于签署关联的官方 DLL。 官方证书归 Microsoft 所有,但由于技术限制,无法将其嵌入到 Office 安装程序中。 因此,在颁发新版本时,开发人员或管理员需要手动更新 受信任的发布者 存储中的证书。

在这种情况下,受影响的 DLL 包括:

  1. VSTOEE.DLL
  2. FDATE.DLL
  3. MOFL.DLL
  4. IMCONTACT.DLL
  5. FSTOCK.DLL
  6. FBIBLIO.DLL
  7. Azure DevOps 加载项

解决方法

若要解决此警告:

  1. 手动安装所需的证书。
  2. 在安装之前,请将证书导出为 .cer 文件。

由于证书不经常更新,因此在颁发新版本时需要手动审查。

导出公钥证书

若要将公钥证书导出到 .cer 文件,请执行以下操作:

  1. 搜索受影响的 .dll 文件 (例如 vstoee.dll,通常可以在“C:\Program Files\Common Files\microsoft shared\VSTO\vstoee.dll”或“C:\Program Files (x86) \Common Files\microsoft shared\VSTO\vstoee.dll”) 找到受影响的文件。
  2. 从搜索结果中,选择 .dll 文件,右键单击并选择 “属性”。
  3. 在 “数字签名 ”选项卡下,选择 “嵌入签名” 下的签名,然后选择 “详细信息”。
  4. 在“数字签名详细信息”对话框中选择“查看证书”。
  5. 在 “详细信息 ”选项卡下,选择“ 复制到文件” 以将最终证书导出到.cer文件。
  6. 在“ 证书路径 ”选项卡下,选择根证书,然后选择 “查看证书”。
  7. 在“详细信息”选项卡下,选择根证书的“证书”对话框中的“复制到文件”,将根证书导出到另一个.cer文件。

部署证书

最终用户:

最终用户可以通过将导出的证书安装到本地证书存储来部署证书。 用户可以以管理员身份打开 cmd 并运行以下命令:


1. certutil -addstore -f "Personal" {cert path}

2. certutil -addstore -f "TrustedPublisher" {cert path}

组织管理员

组织管理员可以使用组策略对象 (GPO) 等部署工具将证书部署到所有组织成员。 有关详细信息或故障排除帮助,请联系部署工具的支持服务。