gpt4 book ai didi

iphone - 如何在 Cocoa Touch 中验证网站证书?

转载 作者:行者123 更新时间:2023-12-03 16:09:09 25 4
gpt4 key购买 nike

我当前使用 NSURLConnection 打开到 Web 服务器的 https 连接。一切正常,我能够检索我想要的页面内容。该证书是由 VeriSign 颁发的,我假设 NSURLConnection 做了一些工作来在某种程度上验证证书的真实性?如果我通过移动 Safari 连接到同一网站,它会从证书中提取,并在导航栏中显示(网站的)组织。是否有可能在 Cocoa Touch 中提取这些相同的细节,因为我也想将它们呈现给用户?另外,根据该证书验证服务器的主机名是否足以合理地假设网站是合法的?

最佳答案

如果您尝试使用无效证书连接到服务器(例如,它是自签名的、过期的、具有错误的主机等)。因此,您实际上不需要自己进行任何验证,因为这一切都为您处理。

如果您确实希望/需要在 UI 中显示 SSL 证书摘要,则需要从 NSURLConnection 下拉一层并使用低级 CFNetwork API 代替。一旦您的 CFReadStreamRef 处于 kCFStreamEventEndEncountered 状态,您应该能够执行以下操作(假设您的流句柄名为 readStream):

NSArray* certificates = [(NSArray*)CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates) autorelease]; 
if ([certificates count] > 0) {
SecCertificateRef certificate = (SecCertificateRef)[certificates objectAtIndex:0];
NSString* description = [(NSString*)SecCertificateCopySubjectSummary(certificate) autorelease];
NSData* data = [(NSData*)SecCertificateCopyData(certificate) autorelease];
}

如果您想访问证书的各种属性,则需要解码 data 中保存的信息,但 description 中保存的摘要可能足以满足你的目的。

关于iphone - 如何在 Cocoa Touch 中验证网站证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251117/

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