对Excel VBA代码进行数字签名时,如何控制显示的证书列表?

对Excel VBA代码进行数字签名时,如何控制显示的证书列表?,vba,excel,certificate,digital-certificate,Vba,Excel,Certificate,Digital Certificate,摘要: 我的目标是使用政府颁发的(硬件/物理)证书对Excel VBA宏进行数字签名。我知道如何从VBA代码窗口完成任务,但没有提供我想要的证书。我知道该证书可用于Windows和Excel。如何确定Excel使用什么逻辑来决定为数字签名代码提供哪些证书 详细信息: (1) 我想按如下方式对代码进行数字签名:开发者菜单->查看代码按钮->(打开VBA代码窗口)->工具菜单->数字签名菜单项->选择按钮->(显示可用证书列表)。不幸的是,我只看到基于软件的证书,而不是我需要用它来签署这个宏的基于硬

摘要:

我的目标是使用政府颁发的(硬件/物理)证书对Excel VBA宏进行数字签名。我知道如何从VBA代码窗口完成任务,但没有提供我想要的证书。我知道该证书可用于Windows和Excel。如何确定Excel使用什么逻辑来决定为数字签名代码提供哪些证书

详细信息:

(1) 我想按如下方式对代码进行数字签名:开发者菜单->查看代码按钮->(打开VBA代码窗口)->工具菜单->数字签名菜单项->选择按钮->(显示可用证书列表)。不幸的是,我只看到基于软件的证书,而不是我需要用它来签署这个宏的基于硬件的证书

(2) 我知道硬件证书可用于Windows和我的浏览器,因为我可以使用它登录使用IE11、Chrome和Firefox的各种网站。我还知道Office可以使用该证书,因为我可以使用它对工作簿本身进行数字签名(从Excel主窗口,插入选项卡->签名行按钮->Microsoft Office签名行…选项->(打开签名设置对话框)->确定按钮->(双击工作簿->更改…按钮->中的签名字段(显示证书列表,包括我想要的证书)

(3) 我拥有计算机的管理权限。我已在certmgr.msc中签入该证书,以确保该证书对Windows可用(它列在证书-当前用户->个人->证书中),并且该证书尚未过期,并且它与我的信任存储中的证书颁发机构(CA)具有有效的信任链(如证书-当前用户->受信任的根证书颁发机构->证书中所列)

(4) 我一直在谷歌上搜索这个问题,但只能得到标准的“这就是你如何对代码进行数字签名”页面,没有找到你想要的证书未列出时该怎么办的参考。我甚至打电话给Microsoft支持部门,但因为它与VBA有关,他们不会帮助我(即使我的公司有公司许可证和应用程序问题支持合同)


非常感谢您的帮助!

工作簿和代码签名过程都列出了IE中“个人”选项卡下存档的证书。我猜您的证书不是用于代码签名的。在证书的“详细信息”选项卡中,查找“增强密钥用法”字段;它是否显示“代码签名”?不,没有提到代码签名。我有三个可以追溯到硬令牌的证书。#1有预期用途=没有增强的密钥使用属性。#2有预期用途=智能卡登录、客户端身份验证、安全电子邮件和增强的密钥使用,也显示了这三个属性。#3有预期用途=智能卡登录、客户端身份验证n和增强的密钥用法也显示了这2个。我无法为这两个添加不需要的用途(我想这并不奇怪)…想必发卡机构必须这样做?奇怪的是#1()没有显示。工作簿和代码签名过程都列出了在“个人”下归档的证书IE中的选项卡。我猜您的证书不是用于代码签名的。在证书的详细信息选项卡中,查找增强密钥使用字段;它是否显示“代码签名”?不,没有提到代码签名。我有三个可以追溯到硬令牌的证书。#1有预期用途=没有增强的密钥使用属性。#2有预期用途=智能卡登录、客户端身份验证、安全电子邮件和增强的密钥使用,也显示了这三个属性。#3有预期用途=智能卡登录、客户端身份验证n和增强的密钥使用情况也显示了这2个。我无法为这两个目的添加不需要的目的(我想这并不奇怪)…想必发卡机构必须这样做?奇怪的是#1()没有显示。