【问题标题】:Using a certificate from Keychain in a Mac application在 Mac 应用程序中使用来自 Keychain 的证书
【发布时间】:2013-01-03 18:25:43
【问题描述】:

我正在尝试构建一个迷你应用程序,以使用codesign 实用程序和我在钥匙串中的开发人员证书来共同设计一个 Mac OS X 应用程序。为此,我使用NSTask,就像这样:

[task setLaunchPath:@"/usr/bin/codesign"];
// ...
NSString *certificateName = @"\"3rd Party Mac Developer Application: Firstname Lastname\"";
NSString *appName = @"\"/path/to/My App.app\"";
NSArray *args = [NSArray arrayWithObjects:@"-s", certificateName, appName, nil];
// ...
[task launch];

我使用NSPipe 来捕获输出并收到此错误消息:no identity found...
但是,如果我通过终端手动启动此命令,则应用程序已签名良好(因此不是证书安装错误等问题)。

我认为问题是因为我的应用程序无法访问钥匙串中的证书(但我可以通过终端)。

有人遇到过这个问题吗?

提前致谢,最好的。

【问题讨论】:

    标签: objective-c xcode cocoa certificate keychain


    【解决方案1】:

    您不应在 NSTask 的参数中嵌入额外的引号:

    NSString *certificateName = @"3rd Party Mac Developer Application: Firstname Lastname";
    NSString *appName = @"/path/to/My App.app";
    

    参数中的空格是自动处理的,不需要引号。

    【讨论】:

    • 天哪……你说得对!我肯定已经测试过了。让我感到羞耻:s 非常感谢 :)
    • 啊,我记得我的错误...之前我尝试不加引号但我忘记了3rd Party Mac Developer Application:Firstname Lastname之间的空格,所以出现了相同的消息no identity found(但不是同理)。一个愚蠢的问题,多亏了你,马丁很快解决了。
    猜你喜欢
    • 2011-07-07
    • 2015-05-16
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2014-05-20
    • 1970-01-01
    • 2011-10-09
    相关资源
    最近更新 更多