是否可以签署包含时间戳的 Excel VBA 项目?
Is it possible to sign a Excel VBA project including timestamp?
我使用数字签名自动签署 Excel 文件中的 VBA 代码,使用 X509Certificate2 和 EPPlus 效果很好。
现在我想包括一个时间戳,知道我可以在哪里设置它吗?
如果我在 VBA 编辑器 - 工具 - 数字签名中手动签署代码,代码将使用时间戳(和副署)进行良好签名。因此,当签名人的证书过期时,它仍然有效。但是当与 EPPlus 签约时则不然。
在 ExcelVBASignature.cs 中,该功能似乎尚未准备就绪..
到目前为止我是这样做的:
using System;
using System.IO;
using OfficeOpenXml;
using System.Security.Cryptography.X509Certificates;
...
X509Certificate2 cert = new X509Certificate2 ( PFXfile, PFXpass, X509KeyStorageFlags.PersistKeySet );
using ( ExcelPackage xl = new ExcelPackage ( new System.IO.FileInfo ( Excelfile ) ) )
{
using ( ExcelWorkbook wb = xl.Workbook )
{
wb.VbaProject.Signature.Certificate = cert;
xl.SaveAs ( new System.IO.FileInfo ( TargetPath ) );
}
}
我的请求可以使用 Microsoft SignTool 而不是 EPPlus 来解决:
我用Microsoft SignTool (from Microsoft Windows 10 SDK) with the Microsoft Office Subject Interface Packages for Digitally Signing VBA Projects.
详细信息:
- 下载并安装 SDK。
包含 signtool.exe 的文件夹是例如C:\Program Files (x86)\Windows Kits\bin.0.18362.0\x86
请务必使用 x86 文件夹。
- 下载并解压缩 SIP Package。
阅读并遵循包含的文件 readme.txt
- 选择你喜欢的parameters and options of signtool.exe
示例:使用以下命令,Excel 文件内的 VBA-Code 使用包含私钥的证书文件通过副署签名。 Excel 工作簿本身不会被签名。
signtool.exe sign /f "CertificateFile.pfx" /p "P@ssw0rd" /fd "SHA256" /tr "http://rfc3161timestamp.globalsign.com/advanced" /td "SHA256" "D:\ExcelFileWithVBA.xlsm"
我使用数字签名自动签署 Excel 文件中的 VBA 代码,使用 X509Certificate2 和 EPPlus 效果很好。 现在我想包括一个时间戳,知道我可以在哪里设置它吗?
如果我在 VBA 编辑器 - 工具 - 数字签名中手动签署代码,代码将使用时间戳(和副署)进行良好签名。因此,当签名人的证书过期时,它仍然有效。但是当与 EPPlus 签约时则不然。 在 ExcelVBASignature.cs 中,该功能似乎尚未准备就绪..
到目前为止我是这样做的:
using System;
using System.IO;
using OfficeOpenXml;
using System.Security.Cryptography.X509Certificates;
...
X509Certificate2 cert = new X509Certificate2 ( PFXfile, PFXpass, X509KeyStorageFlags.PersistKeySet );
using ( ExcelPackage xl = new ExcelPackage ( new System.IO.FileInfo ( Excelfile ) ) )
{
using ( ExcelWorkbook wb = xl.Workbook )
{
wb.VbaProject.Signature.Certificate = cert;
xl.SaveAs ( new System.IO.FileInfo ( TargetPath ) );
}
}
我的请求可以使用 Microsoft SignTool 而不是 EPPlus 来解决:
我用Microsoft SignTool (from Microsoft Windows 10 SDK) with the Microsoft Office Subject Interface Packages for Digitally Signing VBA Projects.
详细信息:
- 下载并安装 SDK。
包含 signtool.exe 的文件夹是例如C:\Program Files (x86)\Windows Kits\bin.0.18362.0\x86
请务必使用 x86 文件夹。 - 下载并解压缩 SIP Package。
阅读并遵循包含的文件 readme.txt - 选择你喜欢的parameters and options of signtool.exe
示例:使用以下命令,Excel 文件内的 VBA-Code 使用包含私钥的证书文件通过副署签名。 Excel 工作簿本身不会被签名。
signtool.exe sign /f "CertificateFile.pfx" /p "P@ssw0rd" /fd "SHA256" /tr "http://rfc3161timestamp.globalsign.com/advanced" /td "SHA256" "D:\ExcelFileWithVBA.xlsm"