我正在尝试从源代码构建qz.io,使其使用自签名证书。
在这个链接上,他们展示了一种从源代码构建并用新证书签名的方法:
ant nsis -Dauthcert.use=path/to/override.crt
然而,在这里,他们说nsis
用于在Windows上构建,对于Mac,我需要运行ant pkgbuild
:
ant nsis # <-- Windows installer
ant pkgbuild # <-- Apple installer
ant makeself # <-- Linux installer
因此,我尝试运行ant pkgbuild -Dauthcert.use=path/to/override.crt
,它创建了一个可以在OSX上使用的新软件包(.pkg),但它没有用我的自签名证书对文件进行签名。但是,ant nsis
运行良好,创建了一个用我的自签名证书签名的.exe
文件。
我认为-Dauthcert.use
选项是针对nsis
的。
你们现在在OSX上做这件事的正确方法是什么?
它没有用我的自签名证书对文件进行签名。
对于有问题的构建脚本,authcert.use
是软件用于内部许可的证书,而不是用于对生成的.pkg
文件进行签名的证书。由于存在多个证书,因此了解它们之间的区别非常重要。
正在签署Apple安装程序
如果你想对生成的.pkg
文件进行签名,你需要获得一个Apple Developer ID,特别是一个标记为创建安装程序的ID。要查看是否已安装,请使用security find-identity -v -p appleID
。
security find-identity -v -p appleID
1) C50DEA4B92E19A5573C48E8CBFCA17A741FF7BC2 "Developer ID Installer: ABC Incorporated (P4E8D512CX)"
2) 43A2EF6B7F9EE536B8FA7FB784E5F81D13BDB5D8 "Developer ID Application: ABC Incorporated (P4E8D512CX)"
你需要的部分在括号里。。。您可以通过重写该值来对.pkg
文件进行签名。注意,从QZ托盘2.2.0开始,需要Application
和Installer
ID。
例如
ant pkgbuild -Dapple.packager.signid=P4E8D512CX
这将从您的钥匙圈中提取名为P4E8D512CX
的Apple签名ID,并使用它对.pkg
文件进行签名。此值将根据您分配的Apple Developer ID而更改。
注意,对于Windows,过程略有不同,您需要提供三个值:-Dsigning.alias=...
、-Dsigning.keystore=...
、-Dsigning.keypass=...
和-Dsigning.storepass=...
。这里提供了示例值,但通常需要将.pfx
(PKCS#12)转换为.jks
。如果您希望在可执行文件创建后对其进行签名,这也可以,但它不会应用于任何捆绑的二进制文件,如启动器、卸载程序或捆绑的DLL。
覆盖内部许可文件
您正在使用的应用程序需要已颁发的证书(如许可证)才能运行。对于想要颁发自己证书的用户,ant pkgbuild -Dauthcert.use=path/to/override.crt
是有效的。这将创建一个内部许可证被覆盖的桌面安装程序。有关此许可证文件的用途的更多信息,请参阅本视频教程:https://www.youtube.com/watch?v=X72y6ZZTWzE