如何在不进入mac开发人员计划的情况下对应用程序进行协同设计?

时间:2014-12-14 22:14:25

标签: macos

当我尝试以下操作时:

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

我收到此错误:

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

显然我没有正确的代码签名,但是如果我注册了mac开发人员程序,那就可以了。

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

3 个答案:

答案 0 :(得分:12)

您需要创建自签名证书。

  1. 打开钥匙串访问。
  2. 选择钥匙串访问>证书助理>创建证书......
  3. 输入名称
  4. 将“证书类型”设置为“代码签名”
  5. 然后,如果您的证书名称为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

答案 1 :(得分:1)

虽然我无法理解您为什么要尝试重新启动Boot Camp助理,但您可以将codesign工具与自签名CA和身份一起使用。

Apple已在其开发人员文档TN2206: OS X Code Signing In Depth中执行此操作。

答案 2 :(得分:0)

如果需要使用 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 文件导入到钥匙串中 (我相信如果您不想使用“钥匙串访问”应用程序,也可以在命令行中执行此操作)。

4)然后,您可以使用证书签名:

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

如果需要,您可以添加--keychain <MyKeyChain.keychain>