我们最近购买了 DigiCert EV 代码签名证书。我们可以使用signtool.exe 对.exe 文件进行签名。但是,每次我们签署文件时,它都会提示输入 SafeNet eToken 密码。
我们如何通过在某处存储/缓存密码来自动化此过程,而无需用户干预?
最佳答案
扩展此线程中已有的答案,可以使用 Microsoft 的标准 Signtool 程序提供 token 密码。
<强>0。在高级 View 中打开 SafeNet 客户端
安装路径可能会有所不同,但对我来说,SafeNet 客户端安装到:C:\Program Files\SafeNet\Authentication\SAC\x64\SACTools.exe
<强>1。从 SafeNet 客户端将公共(public)证书导出到文件
<强>4。将其全部格式化
eToken CSP 具有隐藏(或至少没有广泛宣传)的功能,可以从容器名称中解析 token 密码。
格式是以下四个选项之一:
[]=name
[reader]=name
[{{password}}]=name
[reader{{password}}]=name
地点:
-
reader
是 SafeNet 客户端 UI 中的“读者姓名” -
password
是您的 token 密码 -
name
是 SafeNet 客户端 UI 中的“容器名称”
如果您连接了多个阅读器,那么您必须指定阅读器名称 - 因为我只有一个阅读器,所以我无法确认这一点。
请注意,双大括号( {{
和 }}
)是语法的一部分,必须包含在命令行参数中。
<强>5。将信息传递给signtool
-
/f certfile.cer
-
/csp "eToken Base Cryptographic Provider"
-
/k "<value from step 4>"
- 您需要的任何其他签名工具标志
signtool 命令示例如下
signtool sign /f mycert.cer /csp "eToken Base Cryptographic Provider" /k "[{{TokenPasswordHere}}]=KeyContainerNameHere" myfile.exe
取自此答案的一些图片:https://stackoverflow.com/a/47894907/5420193
关于passwords - 使用 SafeNet eToken 自动进行扩展验证 (EV) 代码签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17927895/