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

iphone – 如何在Cocoa Touch中验证网站证书?,第1张

概述我目前使用NSURLConnection打开与Web服务器的https连接.一切都按预期工作,我能够检索我所追求的页面内容.证书由VeriSign颁发,我认为NSURLConnection在某种程度上做了一些工作来验证证书的真实性吗?如果我通过移动safari连接到同一个网站,它将从证书中提取,并在导航栏中显示组织(网站).是否可能在 Cocoa Touch中提取这些相同的细节,因为我也想将它们呈 我目前使用NSURLConnection打开与Web服务器的https连接.一切都按预期工作,我能够检索我所追求的页面内容.证书由VeriSign颁发,我认为NSURLConnection在某种程度上做了一些工作来验证证书的真实性吗?如果我通过移动safari连接到同一个网站,它将从证书中提取,并在导航栏中显示组织(网站).是否可能在 Cocoa touch中提取这些相同的细节,因为我也想将它们呈现给用户?还会根据该证书验证服务器的主机名是否足够合理以假设网站是合法的?解决方法 如果您尝试连接到具有无效证书的服务器(例如,它是自签名的,过期的,具有错误的主机等),NSURLConnection将给您一个错误(NSURLErrorDomain).因此,您实际上并不需要自己进行任何验证,因为它们都是为您处理的.

如果您确实需要/需要在UI中显示SSL证书摘要,则需要从NSURLConnection下拉图层并使用低级CFNetwork API.一旦你有一个处于kcfStreamEventEndEncountered状态的CFReadStreamRef,你应该能够执行以下 *** 作(假设你的流句柄叫做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]; }

如果要访问证书的各种属性,则需要解码数据中保存的信息,但描述中包含的摘要可能足以满足您的需要.

总结

以上是内存溢出为你收集整理的iphone – 如何在Cocoa Touch中验证网站证书?全部内容,希望文章能够帮你解决iphone – 如何在Cocoa Touch中验证网站证书?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1017311.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存