使用Signtool生成PKCS7分离签名时报pkcs7 sign错误
问题原因分析
错误码0x80070003对应Windows系统错误ERROR_PATH_NOT_FOUND,触发原因是signtool.exe的/p7参数使用方法不符合要求:/p7参数后需要填写签名文件的输出目录路径,而非你当前写的完整签名文件路径。signtool执行时会自动在指定目录下,以原待签名文件名为基础添加.p7后缀生成分离签名文件,你直接传入了完整的.sig文件路径,signtool会将该路径识别为目录尝试访问,找不到对应目录就会抛出内部错误。
修正方案
- 调整
/p7参数取值,改为你要存放签名的目录路径,示例中要输出到C:\somewhere,直接写该目录路径即可,签名生成后可手动重命名为你需要的.sig后缀 - 确认指定的输出目录已存在且当前用户拥有写入权限
修正后的命令如下:
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe" sign /debug /v /tr http://timestamp.digicert.com /fd sha256 /sha1 0ABCD...01234 /sm /p7ce DetachedSignedData /p7co 1.2.840.113549.1.7.2 /p7 "C:\somewhere" "C:\somewhere\test-zip-file.zip"
执行后会在C:\somewhere目录下生成test-zip-file.zip.p7的分离签名文件,按需重命名为.sig即可正常使用。
内容的提问来源于stack exchange,提问作者Thomas BDX
相关产品推荐
相关产品推荐

