如何检查iOS中SSL证书的安全性?
我想检查SSL SSL证书是否存在于URL中也想检查它的版本和validationtypes。
我创build了一个应用程序,我调用NSURLConnection委托方法通过服务器发送请求。
也使用“canAuthenticateAgainstProtectionSpace”方法,但是一旦连接build立,这个方法就不会被调用。
谁能告诉我如何做到这一点。
iOS不会非常细致地访问证书信息。 您有两种select:私有API或使用OpenSSL构build自己的评估程序。
您可以在开源代码中看到专用证书function。 该版本可从SecCertificateVersion()
。 我不确定你在这里的“validationtypes”是什么意思。
要使用OpenSSL完成此操作,可以使用SecCertificateCopyData()
获取DER数据,然后SecCertificateCopyData()
parsing所有内容。
我build议在这个问题上开一个雷达(bugreporter.apple.com)。 缺乏对证书基本信息的访问是一个严重的问题。
如果您正在查找从NSURLConnection
中提取证书的示例代码,请参阅iOS中的第11章示例代码 :PTL :
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { NSURLProtectionSpace *protSpace = challenge.protectionSpace; SecTrustRef trust = protSpace.serverTrust; ... SecCertificateRef cert = SecTrustGetCertificateAtIndex(trust, 0); ...
在这一点上, cert
持有你的叶证书。