【问题标题】:How can I codesign an app without being in the mac developer program?如何在不加入 mac 开发人员计划的情况下对应用程序进行代码设计?
【发布时间】:2014-12-14 22:14:24
【问题描述】:

当我尝试以下操作时:

mba:Utilities ryan$ sudo codesign -fs /Applications/Utilities/Boot\ Camp\ Assistant.app/

我收到此错误:

/Applications/Utilities/Boot Camp Assistant.app/: no identity found

显然我没有正确的代码签名,但如果我注册了 mac 开发者计划,它就可以工作。

如何在不注册mac开发者计划的情况下获得签名?

【问题讨论】:

  • 只是想知道,代码签名的目标是什么? Gatekeeper 不会识别非 Apple 的签名。
  • -s 选项需要身份名称,例如 -。你错过了。正确的命令是:sudo codesign -fs - /Applications/Utilities/Boot\ Camp\ Assistant.app(注意-fs - / 部分)。
  • @JWWalker 您可能需要使用自签名证书进行签名,仅用于测试目的(例如开发版本),或者如果您想通过公司的渠道发送应用程序并与公司签署二进制文件证书而不是 Apple 证书。

标签: macos


【解决方案1】:

您需要创建一个自签名证书。

  1. 打开钥匙串访问。
  2. 选择钥匙串访问>证书助手>创建证书...
  3. 输入名称
  4. 将“证书类型”设置为“代码签名”

那么,如果您的证书名称是my-new-cert,您的命令应该如下所示:

sudo codesign -fs my-new-cert /Applications/Utilities/Boot\ Camp\ Assistant.app

这适用于 OS X 10.10 Yosemite。

来自此处的说明:http://support.apple.com/kb/PH7173

【讨论】:

  • 该支持链接现已失效。你确定sudo 是必需的吗?
  • sudo 给我带来了问题; “错误:在钥匙串中找不到指定的项目。”我想那是因为钥匙不在root 的钥匙串上,而是我自己的。
【解决方案2】:

虽然我不明白您为什么要尝试退出 Boot Camp 助手,但您可以使用带有自签名 CA 和身份的协同设计工具。

Apple 在其开发者文档TN2206: OS X Code Signing In Depth 中提供了相关步骤。

【讨论】:

  • 我需要弄乱 Info.plist 文件来为 Windows 机器创建 USB 引导驱动器。这需要代码签名。创建自签名证书绝对是要走的路。
【解决方案3】:

如果您需要使用 openssl 命令行创建自签名证书并将其用于签名,您可以这样做:

1) 创建 spaghetti.software.extensions 配置文件,内容如下:

[ ca ] 

default_ca = CA_default 

[ req ] 

distinguished_name = req_distinguished_name 

x509_extensions = v3_ca 

#req_extensions = v3_req 

[req_distinguished_name ] 

CN = spaghetti.software.com 

[ CA_default ] 

x509_extensions = usr_cert 

[ usr_cert ] 

[ v3_ca ] 

basicConstraints = critical, CA:FALSE 

keyUsage = critical, cRLSign, digitalSignature, keyCertSign 

extendedKeyUsage = critical, serverAuth, clientAuth, codeSigning, emailProtection 

2) 运行以下命令创建证书并将证书和密钥打包到 .p12 文件(PKCS12)中:

openssl req -subj '/CN=spaghetti.software.com' -config spaghetti.software.extensions -x509 -newkey rsa:4096 -keyout selfSignedKey.pem -out selfSigned.pem -days 365 


openssl pkcs12 -export -out spaghetti.software.p12 -inkey selfSignedKey.pem -in selfSigned.pem 

3) 新建.keychain文件,将spaghetti.software.p12文件导入钥匙串 (如果您不想使用 Keychain Access 应用程序,我相信您也可以使用命令行来执行此操作)。

4) 然后就可以使用证书来签名了:

codesign -s "spaghetti.software.com" --force <binaryToSign> 

如果需要,您可以添加--keychain &lt;MyKeyChain.keychain&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2015-08-07
    相关资源
    最近更新 更多