SSL套接字连接iOS

亚历山大·诺斯

我试图建立与Java运行SSLServerSocket的安全连接。

我已经创建了自己的根CA,并已使用该证书签署了Java SSLServerSocket证书。

我想将此根证书添加到我的应用程序,以便由根证书签名的任何证书都可以使用。

到目前为止,通过将读写流属性设置为此,安全连接可以正常工作:

NSDictionary *settings = [[NSDictionary alloc] initWithObjectsAndKeys:
(id)kCFStreamSocketSecurityLevelNegotiatedSSL, kCFStreamPropertySocketSecurityLevel,
[NSNumber numberWithBool:YES], kCFStreamSSLAllowsExpiredCertificates,
[NSNumber numberWithBool:YES], kCFStreamSSLAllowsExpiredRoots,
[NSNumber numberWithBool:NO], kCFStreamSSLValidatesCertificateChain,nil];

我将证书添加到钥匙串中,如下所示:

-(void)addRootCert{
NSString* rootCertPath = [[NSBundle mainBundle] pathForResource:@"rootCA" ofType:@"der"];
NSData* rootCertData = [NSData dataWithContentsOfFile:rootCertPath];

OSStatus err = noErr;
SecCertificateRef rootCert = SecCertificateCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)rootCertData);
NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:(__bridge_transfer id)kSecClassCertificate, kSecClass, rootCert, kSecValueRef, nil];

err = SecItemAdd((__bridge CFDictionaryRef) dict, NULL);
if (err == noErr) {
    NSLog(@"Sucessfully added root certificate");
}else if (err == errSecDuplicateItem){
    NSLog(@"Root certificate already exists");
}else{
    NSLog(@"Root certificate add failed");
}
}

很好,但是我想验证证书链,以便我的应用仅接受由我的CA(或默认的受信任证书)签名的证书

我怎样才能做到这一点?

如果设置kCFStreamSSLValidatesCertificateChain为yes,CFNetwork SSLHandshake failed (-9807)则会出现错误:但是如果不是,则由谁签署服务器证书都无关紧要,无论如何都将连接(我认为是对的吗?)

谢谢!

淡淡的

技术说明2232,“ HTTPS服务器信任评估”,应具有所需的所有答案。有有关如何评估服务器信任度的文档和一些示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java中的密钥SSL套接字连接

来自分类Dev

在Python中打开SSL套接字连接

来自分类Dev

iOS:在套接字中读写(TCP连接)

来自分类Dev

套接字连接期间IOS UI冻结

来自分类Dev

如何通过HTTP代理连接SSL套接字?

来自分类Dev

检测SSL连接并将套接字转换为SSLSocket

来自分类Dev

PHP Web套接字未使用SSL连接

来自分类Dev

检测SSL连接并将套接字转换为SSLSocket

来自分类Dev

JAVA中的SSL套接字连接池

来自分类Dev

套接字连接超时

来自分类Dev

套接字TCP连接

来自分类Dev

具有自签名证书错误的SSL连接(C#套接字连接到Java Server套接字)

来自分类Dev

通过套接字连接在iOS上播放音频

来自分类Dev

通过套接字的iOS连接无法正常工作

来自分类Dev

通过套接字连接在iOS上播放音频

来自分类Dev

SSL套接字连接:CFNetwork SSLHandshake失败(-9824)连接到Java SSLServerSocket

来自分类Dev

UNIX套接字连接被拒绝

来自分类Dev

Python套接字连接异常

来自分类Dev

Android套接字连接超时

来自分类Dev

Python套接字无法连接

来自分类Dev

python套接字拒绝连接

来自分类Dev

套接字等待连接超时

来自分类Dev

与Qt的Java套接字连接

来自分类Dev

无法建立套接字连接

来自分类Dev

套接字编程连接错误

来自分类Dev

套接字异常:连接重置

来自分类Dev

网络/套接字连接问题

来自分类Dev

Winsock:连接套接字问题

来自分类Dev

Linux中的套接字连接