标签: keychain

此证书具有无效的颁发者Apple推送服务

我已创建证书以在我的应用程序中启用推送服务,但每次我尝试在我的钥匙串中添加证书时,在添加证书后它会显示以下错误:

此证书具有无效的颁发者

在此输入图像描述

xcode keychain ssl-certificate apple-push-notifications ios

460
推荐指数
12
解决办法
11万
查看次数

如何将使用PuTTYgen(Windows)生成的SSH密钥对转换为ssh-agent和Keychain(Linux)使用的密钥对

我使用PuTTYgen生成密钥对并使用Pageant登录,因此我必须在系统启动时输入一次密码短语.

我如何在Linux中实现这一目标?我听说过,keychain但我听说它使用了不同的密钥对格式 - 我不想更改我的Windows密钥,如果我可以在Windows和Linux中以相同的方式无缝连接,那就太好了.

git putty keychain ssh-keys pageant

446
推荐指数
8
解决办法
52万
查看次数

iOS:如何在应用程序中存储用户名/密码?

我的iOS应用程序中有一个登录屏幕.NSUserDefaults当您再次进入应用程序时,用户名和密码将保存在再次加载到登录屏幕中(当然,这NSUserDefaults是永久性的).

现在,用户可以禁用用户名/密码保存功能.

那么NSUserDefaults将被清除.

但在我的应用程序中,我需要这个用户名/密码用于用户的数据库查询.那么:除了存储数据的位置NSUserDefaults?(当用户退出应用程序或注销时,可以/应该删除此位置).

keychain nsuserdefaults ios

274
推荐指数
6
解决办法
17万
查看次数

Codesign想要在你的钥匙串中访问密钥"访问",我输入了我的登录密码,但一直在问我

我正在尝试学习从Xcode加载我的iPhone上的应用程序.当我这样做时,我会在你的钥匙串中继续获得"Codeign想要访问密钥"访问权限,我把我的登录密码放在一边又一遍又一遍地弹出.我已经多次尝试过我的电脑登录,苹果账号密码,很多其他的.

在此输入图像描述

xcode keychain codesign access

246
推荐指数
12
解决办法
11万
查看次数

卸载应用程序时删除钥匙串项

我正在使用idandersen的scifihifi-iphone代码进行钥匙串和使用保存密码

[SFHFKeychainUtils storeUsername:@"User" andPassword:@"123"
              forServiceName:@"TestService" updateExisting:YES error:&error];
Run Code Online (Sandbox Code Playgroud)

当我从设备中删除应用程序时,密码仍保留在钥匙串中.

我想在用户从设备中删除应用程序时从密钥链中删除密码.我怎样才能做到这一点?

objective-c keychain ios

233
推荐指数
7
解决办法
9万
查看次数

Xcode 4 - 在新的Macintosh安装上配置配置文件中出现"找不到有效签名身份"错误

我有一个苹果我用来开发iPhone应用程序使用的XCode 4,我现在有一个新的Macintosh用新安装的...一切.

当打开在旧Mac上构建的Xcode项目时,我无法在配置为开发iPhone的iPhone上运行该应用程序.
Xcode 4组织者在我的配置文件中告诉我"找不到有效的签名身份".

我想这与我之前在旧Mac上生成的.certSigningRequest文件有关(我有一个该文件的备份),但是我在新Mac上有什么用呢?

另一个奇怪的事情是,即使在刷新之后和输入我的配置门户登录名和密码之后,我也没有在组织者中看到我现有的5个配置文件(在Apple配置门户上定义):

在此输入图像描述

iphone xcode certificate keychain provisioning-profile

209
推荐指数
9
解决办法
23万
查看次数

SecItemAdd和SecItemCopyMatching返回错误代码-34018(errSecMissingEntitlement)

有时,当我在Xcode上运行设备上的应用程序时,我会尝试访问密钥链但由于错误-34018而失败.这与任何记录的钥匙串错误代码都不匹配,并且无法一致地再现.(可能有30%的时间发生,我不清楚为什么会发生这种情况).使调试这个问题变得非常困难的原因是完全缺乏文档.知道是什么导致这个以及如何解决它?我正在使用Xcode 5并在设备上运行iOS 7.0.4.

这里有一个公开的问题:https://github.com/soffes/sskeychain/issues/52

编辑:每个请求添加钥匙串访问代码

我正在使用该SSKeychain库与钥匙串连接.这是片段.

#define SERVICE @"default"

@implementation SSKeychain (EXT)

+ (void)setValue:(NSString *)value forKey:(NSString *)key {
    NSError *error = nil;
    BOOL success = NO;
    if (value) {
        success = [self setPassword:value forService:SERVICE account:key error:&error];
    } else {
        success = [self deletePasswordForService:SERVICE account:key error:&error];
    }
    NSAssert(success, @"Unable to set keychain value %@ for key %@ error %@", value, key, error);
    if (!success) {
        LogError(@"Unable to set value to keychain %@", error);
    }
    LogTrace(@"Will set …
Run Code Online (Sandbox Code Playgroud)

cocoa keychain ios sskeychain

116
推荐指数
5
解决办法
4万
查看次数

是什么让钥匙串项目独一无二(在iOS中)?

我的问题涉及iOS(iPhone,iPad,...)中的钥匙串.我认为(但不确定)Mac OS X下的钥匙串的实现会以相同的答案提出同样的问题.


iOS提供五种类型(类)的钥匙串项.您必须为密钥选择这五个值中的一个kSecClass来确定类型:

kSecClassGenericPassword  used to store a generic password
kSecClassInternetPassword used to store an internet password
kSecClassCertificate      used to store a certificate
kSecClassKey              used to store a kryptographic key
kSecClassIdentity         used to store an identity (certificate + private key)
Run Code Online (Sandbox Code Playgroud)

经过阅读苹果文档,博客和论坛条目很长一段时间,我发现这种类型的钥匙串项目kSecClassGenericPassword从属性得到它的独特性kSecAttrAccessGroup,kSecAttrAccountkSecAttrService.

如果请求1中的这三个属性与请求2中的相同,则无论其他任何属性如何,您都会收到相同的通用密码keychain项.如果此属性中的一个(或两个或全部)更改其值,则会获得不同的项目.

但是kSecAttrService仅适用于类型的项目kSecClassGenericPassword,因此它不能成为任何其他类型的项目的"唯一键"的一部分,并且似乎没有文档明确指出哪些属性唯一地确定了钥匙串项目.

"GenericKeychain"类"KeychainItemWrapper"中的示例代码使用该属性kSecAttrGeneric使项目唯一,但这是一个错误.此示例中的两个条目仅存储为两个不同的条目,因为它们kSecAttrAccessGroup不同(一个设置了访问组,另一个允许它自由).如果您尝试使用Apple's添加没有访问组的第二个密码KeychainItemWrapper,则会失败.

那么,请回答我的问题:

  • 这是真的,那的组合kSecAttrAccessGroup,kSecAttrAccount并且kSecAttrService是一个钥匙串项目,其kSecClass是"唯一钥匙" kSecClassGenericPassword
  • 哪个属性使钥匙串项目唯一,如果kSecClass不是kSecClassGenericPassword

macos objective-c keychain ios

96
推荐指数
3
解决办法
2万
查看次数

Mac OS X希望在编译项目时使用系统密钥链

我在编译Xcode项目时被要求输入系统管理员用户名和密码.整个信息是

Mac OS X想要进行更改.输入管理员的名称和密码以允许此操作.Mac OS X想要使用系统密钥链.

有人有解决方案吗?

xcode keychain

88
推荐指数
5
解决办法
6万
查看次数

iOS KeyChain不从后台检索值

我目前正在iOS KeyChain中存储用户名(电子邮件)和电子邮件和密码的盐渍哈希.我正在使用这里发现的ARC'ified版本.

KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
[wrapper setObject:APP_NAME forKey:(__bridge id)kSecAttrService];
[wrapper setObject:email forKey:(__bridge id)kSecAttrAccount];
[wrapper setObject:token forKey:(__bridge id)kSecValueData];
Run Code Online (Sandbox Code Playgroud)

当我需要在应用程序处于活动状态时拉出令牌以进行网络呼叫时,这一切都正常.它适用于从干净的启动登录,以及整个网络调用.当应用程序在后台时,问题就开始了.

请记住,这只是零星发生,我还没有把它固定到特定的iOS版本或设备上.

用户绊倒一个位置(区域监控),我想用他们的状态更新服务器.我尝试将令牌从钥匙串中取出,就像我为每个其他网络呼叫所做的那样,并更新状态.但对于一些用户来说,价值是零.没有它,我无法更新网络内容.为什么这对大多数人有效,但对于一小部分人来说不是这样?

KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
NSString *token = [wrapper objectForKey:(__bridge id)kSecValueData];
Run Code Online (Sandbox Code Playgroud)

我已经回到了keychainwrapper的非ARC版本,但我仍然得到了相同的结果.我将不胜感激任何反馈.它只是我用户的一小部分,但这是一个我想解决的问题而不用担心.提前致谢.

此外,我的所有后台工作都在backgroundTask中设置,以防止事情超时.我对钥匙链的工作没有任何问题,但在令牌填满之前我不会让事情继续下去.

编辑 我发现我的问题是他们的钥匙串没有从后台检索值.我将在下面发布答案并接受它,因为我觉得这个问题可能会在以后对其他人有价值.

iphone background keychain lockscreen ios

81
推荐指数
2
解决办法
2万
查看次数