19
4

2 回答 2

6

这是 Omar Ismail 的说明,省略了单独的 shell 脚本的需要。这一切都将发生在一个目录safari/中,我们将在其中签署该目录safari/appname.safariextension/以成为扩展safari/appname.safariextz。首先是使用 Extension Builder 以官方方式对扩展进行签名Build Package

设置 Xar:
1. 下载并解压/解压缩 https://github.com/downloads/mackyle/xar/xar-1.6.1.tar.gz 到任何你想要的可执行文件 xar-1.6.1(xar 1.6dev 没有'不支持我们需要的选项)
2. 在 xar-1.6.1/

./configure
make
sudo make install
sudo ln -s /full/path/to/xar-1.6.1/src/xar /usr/local/bin/xar161

设置您的证书:
1. 在 safari/

mkdir certs/
xar161 -f appname.safariextz --extract-certs certs/

2. 打开 Keychain Access 并将您的 Safari Developer 证书导出到 safari/certs/certs.p12 (certs.p12 使用空白密码,然后使用 Mac 的密码导出证书)
3. 在 safari/certs/

openssl pkcs12 -in certs.p12 -nodes | openssl x509 -outform der -out cert.der
(same blank password)
openssl pkcs12 -in certs.p12 -nodes | openssl rsa -out key.pem
(same blank password)
openssl dgst -sign key.pem -binary < key.pem | wc -c > size.txt

您可能可以从中获取证书certs/cert.p12,而不需要该--extract-certs步骤(因此不需要以官方方式构建的扩展),但我不太了解 openssl,并且仅用于设置您需要该步骤反正。

一切都设置好后,签署扩展名:
在 safari/

xar161 -czf appname.safariextz --distribution appname.safariextension/
xar161 --sign -f appname.safariextz --digestinfo-to-sign digest.dat --sig-size `cat certs/size.txt` --cert-loc certs/cert.der --cert-loc certs/cert01 --cert-loc certs/cert02
openssl rsautl -sign -inkey certs/key.pem -in digest.dat -out sig.dat
xar161 --inject-sig sig.dat -f appname.safariextz
rm -f sig.dat digest.dat

这一切都在 2006 年的 Snow Leopard MacBook 上,所以在更新的机器上情况可能会有所不同。

于 2013-12-02T21:35:21.003 回答
4

Looks like there is a way to patch XAR with a signature option. http://code.google.com/p/xar/issues/detail?id=76#c0

于 2010-08-27T23:29:24.620 回答