首页 文章

Sparkle - 通过ssh的sign_update:“无法访问Keychain中的必需密钥”?

提问于
浏览 1953
0
  • Sparkle-1.21.0

  • OS X 10.11

generate_appcast 不适用于 .dmg 文件:

从目录/ Users / quanta / Downloads / updates生成appcast时出错Error Domain = SUSparkleErrorDomain Code = 1001“在/ Users / quanta / Downloads / updates中找不到可用的档案”UserInfo = {NSLocalizedDescription =在/ Users / quanta中找不到可用的档案/下载/更新}

所以,我必须手动创建 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 ,我选择"Always allow",所以下次不要求输入密码:

$./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

    原因是 login.keychain 在通过ssh运行时被锁定 .

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

    #!/bin/sh
    
    security unlock-keychain -p "$pa55w0rd" $HOME/Library/Keychains/login.keychain
    

相关问题