gpt4 book ai didi

iPhone:HTTPS 客户端证书认证

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:39 24 4
gpt4 key购买 nike

我正在与客户端证书身份验证作斗争。当服务器需要凭据(在本例中为证书)时,从 NSURLConnection 委托(delegate)调用此方法:

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge

我想从文件加载证书,填写凭据并运行此方法:

[[challenge sender] useCredential:[self credential] forAuthenticationChallenge:challenge];

但我不知道如何初始化(或填充)SecIdentityRef 参数。这是我创建凭据的代码:

NSString *certPath = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"cer"];
NSData *certData = [[NSData alloc] initWithContentsOfFile:certPath];

SecIdentityRef myIdentity; // ???

SecCertificateRef myCert = SecCertificateCreateWithData(NULL, (CFDataRef)certData);
[certData release];
SecCertificateRef certArray[1] = { myCert };
CFArrayRef myCerts = CFArrayCreate(NULL, (void *)certArray, 1, NULL);
CFRelease(myCert);
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:myIdentity
certificates:(NSArray *)myCerts
persistence:NSURLCredentialPersistencePermanent];
CFRelease(myCerts);

有人知道怎么解决吗?谢谢。


我终于找到了解决方案,但是新问题又来了:

我的客户端没有将证书发送到服务器。服务器请求证书后,应用程序运行此方法:

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge

我填写了凭据(就像我上面提到的),但连接以错误结束:NSURLErrorDomain -1206。根据服务器日志,应用程序未发送客户端证书。

有没有人对这种行为有任何经验?我是否需要以某种方式验证应用程序中的证书?或者其他什么让它起作用?如果有帮助,我可以提供我当前的代码。感谢您的任何想法...

最佳答案

我使用这些步骤:

  1. 使用 SecPKCS12Import 函数从 pkcs12 证书文件中提取 SecIdentityRef
  2. 使用SecIdentityCopyCertificate函数获取SecCertificateRef

其余部分(凭证初始化)与我的问题相同...如果您愿意,我可以在此处放置更多代码。请注意,在 iphone 模拟器中存在错误 (http://openradar.appspot.com/7090030),因此无法在模拟器中使用大量证书。

关于iPhone:HTTPS 客户端证书认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com