SVN 在提交时剥离代码证书签名

SVN strips code certificate signature on commit

我在将使用代码签名证书签名的 .exe 安装程序提交到 svn 时遇到问题。我编译程序并输出一个 .exe windows 安装程序二进制文件,我使用代码签名证书对文件进行签名并验证签名。

我使用以下命令对文件进行签名:

codesign --verify --verbose --deep --timestamp --sign "<certificate-name" <path-to-the-file-that-should-be-signed>

我使用以下命令验证签名:

codesign --verbose=4 --display --deep -r- <path-to-the-signed-file>

输出看起来像这样:

Executable=path-to.exe
Identifier=<file name>
Format=generic
CodeDirectory v=20100 size=168 flags=0x0(none) hashes=1+2 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=a1d3855d9c469f8a1297583485d533f8fa8b9aaf
CandidateCDHash sha256=13d2a8112b513831f1ce8773103c30df12d08496
Hash choices=sha1,sha256
Page size=none
CDHash=13d2a8112b513831f1ce8773103c30df12d08496
Signature size=8912
Authority=companyname
Authority=DigiCert SHA2 Assured ID Code Signing CA
Authority=DigiCert Assured ID Root CA
Timestamp=10 jan. 2018 12:43:46
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
designated => identifier "file name" and certificate leaf = H"a97b16d7951d71de5f7c09ce7b086b9c512b2391"

一切似乎都井井有条,我将文件提交到 SVN 存储库。当我稍后签出该文件时,它不包含任何证书信息。

codesign --verify 的输出如下:

file.exe: code object is not signed at all

我已尝试 google 并搜索 Whosebug 以查找有关这是与 SVN 相关的问题还是与 OS 相关的信息。

我可以通过将安装程序打包成一个 zip 文件来规避这个问题,但是在使用安装程序时这对用户来说并不友好。

有没有其他人遇到过这个问题,如果遇到过,(如何)你设法让它工作了?

问题似乎与登录 macOS 有关。根据 这里关于 Whosebug 的问题,macOS 将签名保存为每个文件的元数据。

这也是为什么svn在os x.

中签名后不识别文件被修改的原因

我通过在 VirtualBox 上安装 Windows 10 图像并在那里签署文件解决了这个问题。这感觉不像是最佳解决方案,但它现在有效。