如何检查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持有你的叶证书。