代码签名

介绍:

建议将MS Office应用程序中的“宏安全级别”设置为“高”。 这将停止运行与项目关联的任何VBA代码,除非已对其进行签名(使用证书)。 受信任的签名将允许代码正常运行,而不受信任的签名将提示用户信任签发的CA(证书颁发机构)并启用代码,或者只是禁用代码。

一切都很好,但是假设您开发了可在工作场所使用的Excel,Word,Access等项目,并且您不想花很多钱从主要的发行CA之一购买昂贵的证书吗? 您还希望保护用户库免受其他地方的潜在恶意代码的侵害,但要运行您的

官方顺利进行,没有持续的提示。

可以使用selfcert.exe进行自我认证,但是以这种方式创建证书时,不能导出其私钥。 Windows证书控制台的导出向导说“关联的私钥被标记为不可导出”。 这实际上意味着它只能在使用证书的PC上运行。 这似乎是远远不够的。

本文介绍了如何在无需太多麻烦的情况下实现这一目标。 构建它的大部分细节来自

http://www.source-code.biz ,所以我对此表示感谢。 创建证书文件:

若要创建可用于在多台计算机上签名MS-Office VBA项目(Excel / Word宏)的证书文件(.PFX),需要三个可执行文件:

MakeCert.Exe Cert2Spc.Exe PVKImprt.Exe

注意 PVKImprt.Exe是下载的名称,以及下载内部的文件的名称。 里面的一个很重要。 容易出错,因为某种原因它被双重压缩了。

如果链接消失了,我还将这些可执行文件的副本作为附件(CodeSigning.Zip)包括在内。 该文件中的PVKImprt.Exe是实际需要的,而无需重新提取。

解决方案: 参数:

可以使用以下命令创建一个PFX文件(PKCS#12),该文件包含自签名证书以及关联的私钥,但是在开始之前,我们需要解释/定义一些参数:

%Name%=您希望证书显示为的名称。

%File%=要使用的文件名(不带扩展名)。

%PW%=确定用于证书的密码。

证书创建:
MakeCert -r -n "CN=%Name%" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.3 -sv %File%.pvk %File%.cer
******** You will be asked for a password (%PW%) 3 times.
Cert2Spc %File%.cer %File%.spc
PVKImprt -pfx %File%.spc %File%.pvk
******** Enter password (%PW%) to start the Wizard.
******** Select to export the private key.
******** Select to "include all certificates in the certification path" & "to enable strong protection".
******** Enter password (%PW%) again, twice.
******** Enter, or browse to, the name of the export file required (path\%File%.pfx).
******** Finish if / when you have checked the details on the final screen.
最后一条命令(pvkimprt -pfx ...)创建文件%File%.pfx。 然后可以将此PFX文件导入Windows证书存储区并用于代码签名。

(MakeCert.Exe和Cert2Spc.Exe是几个Microsoft SDK的一部分,例如Platform SDK或DotNet SDK,可以从microsoft.com下载)。

证书安装:

在可用.pfx文件的情况下,请按照以下步骤安装将项目签名到PC的功能:

  1. 打开控制面板
  2. 选择“ Internet选项”
  3. 选择内容选项卡。
  4. 单击证书
  5. 点击导入...
  6. 点击下一步
  7. 点击浏览
  8. 选择Type = Personal Information Exchange(.pfx)的文件
  9. 选择%File%.pfx
  10. 点击下一步
  11. 再次输入%PW% ,然后根据需要选择“ 启用强私钥保护”
  12. 选择将此密钥标记为可导出
  13. 点击下一步
  14. 选择自动选择证书存储
  15. 单击下一步,然后单击完成
签署项目:

现在安装了证书,您需要使用它签署一个项目。

如果您没有空位:

  1. 打开Excel。
  2. 在单元格A1中键入任何内容(任何内容)。
  3. 使用Alt-F11切换到VBA编辑器。
  4. 在项目资源管理器窗格(Ctrl-R)中,双击ThisWorkbook
  5. 在“代码”窗格中,粘贴以下简短代码:
    Option Explicit 
    Private Sub Workbook_Open()
        Call MsgBox("Hello World")
    End Sub
  6. 选择工具 / 数字签名 / 选择
  7. 选择证书。
  8. 单击确定
  9. 使用Alt-F11切换回Excel并保存文件(例如Test.Xls)。
信任签名:

希望信任此签名(使用2007年之前的Access版本)的任何人都应该:

  1. 打开Excel并确保将安全级别设置为“高”(“ 工具” /“ 宏” /“ 安全性” /“ 高” )。
  2. 打开一个包含签名项目的文件(例如Test.Xls)。
  3. 弹出“ 安全警告”窗口时,选择“ 始终信任来自此发布者的宏”(如果它未显示为灰色)
  4. 单击启用宏
  5. 如果显示为灰色:
    1. 单击详细信息... / 查看证书 / 安装证书...
    2. 像以前一样浏览并“完成”向导。
    3. 关闭“ 安全警告”窗口(顶部的X确保文件没有打开)。
    4. 重新打开文件。 选择始终信任来自此发布者的宏 (不再显示为灰色)
    5. 单击启用宏

希望信任此签名(使用Access 2007)的任何人都应该:

  1. 打开一个数据库,您知道该数据库已经由您希望信任其发布者的证书签名。
  2. 带有选项按钮的窗口顶部附近会出现一条安全警告消息。 点击这个。
  3. 选择显示签名详细信息
  4. 选择查看证书
  5. 点击安装证书...
  6. 显示向导时,单击“ 下一步 ”。
  7. 选择基于证书类型自动选择证书存储单选按钮。
  8. 单击下一步
  9. 点击完成
  10. 您是否要安装此证书的问题 ,回答“ 是”
  11. 单击确定
  12. 单击确定
  13. 单击确定
  14. 选择“信任此发布者的所有文档”
  15. 单击确定
附加的文件
文件类型:zip CodeSigning.Zip (27.8 KB,618浏览)

From: https://bytes.com/topic/access/insights/863718-code-signing

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值