闪耀-通过ssh sign_update:“无法访问钥匙串中所需的钥匙”?

时间:2018-12-10 10:06:39

标签: macos keychain sparkle

  • Sparkle-1.21.0
  • OS X 10.11

generate_appcast不适用于.dmg文件:

  

从目录生成应用广播时出错   / Users / quanta / Downloads / updates错误域= SUSparkleErrorDomain   代码= 1001“在以下位置找不到可用的档案   / Users / quanta / Downloads / updates“ UserInfo = {NSLocalizedDescription = No   在/ Users / quanta / Downloads / updates}中找到可用的归档文件

因此,我必须手动创建appcast.xml

<?xml version="1.0" standalone="yes"?>
<rss xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" version="2.0">
    <channel>
        <title>x</title>
        <item>
            <title>1.0.0.2891</title>
            <pubDate>Thu, 06 Dec 2018 17:25:26 +0800</pubDate>
            <sparkle:minimumSystemVersion>10.7</sparkle:minimumSystemVersion>
            <enclosure url="https://example.com/x.dmg" sparkle:version="1.0.0.2891" sparkle:shortVersionString="1.0.0.2891" length="86454539" type="application/octet-stream"/>
        </item>
    </channel>
</rss>

在测试时遇到此错误:

  

该软件包的DSA签名验证失败。此更新包含一个安装程序包,所有安装程序包都必须具有有效的DSA签名。此更新将被拒绝。使用有效的DSA密钥对安装程序进行签名,或者改用.app软件包更新。

第一次运行sign_update时,我选择“始终允许”,因此下次不会要求输入密码:

$./bin/sign_update /path/to/x.dmg
sparkle:edSignature="x==" length="105562628"

但是通过ssh运行时,我仍然收到此错误:

$ ~/Downloads/Sparkle-1.21.0/bin/sign_update /path/to/x.dmg
ERROR! Unable to access required key in the Keychain -25308 (you can look it up at osstatus.com)

我知道我们可以使用openssl做同样的事情:https://github.com/sparkle-project/Sparkle/blob/master/bin/old_dsa_scripts/sign_update

但是如何从钥匙串中导出dsa_priv.pem

1 个答案:

答案 0 :(得分:0)

原因是通过SSH运行时login.keychain被锁定。

我们必须在运行sign_update之前将其解锁。将以下命令放入脚本中:

#!/bin/sh

security unlock-keychain -p "$pa55w0rd" $HOME/Library/Keychains/login.keychain