ios - 如何检查 iOS 中 SSL 证书的安全性?

标签 ios security ios5 ios4 ssl-certificate

我想检查 SSL 证书是否出现在 URL 中,还想检查它的版本和验证类型。

我创建了一个应用程序,我在其中调用 NSURLConnection 委托(delegate)方法通过服务器发送请求。

还使用了"canAuthenticateAgainstProtectionSpace" 方法,但是一旦建立连接就不会调用此方法。

我如何实现这一目标?

最佳答案

iOS 不会让您非常精细地访问证书信息。您有两个选择:私有(private) API 或使用 OpenSSL 构建您自己的评估器。

可以在opensource code中看到私有(private)证书函数.该版本可从 SecCertificateVersion() 获得。我不确定您在这里所说的“验证类型”是什么意思。

要使用 OpenSSL 执行此操作,您可以使用 SecCertificateCopyData() 获取 DER 数据,然后自行解析所有内容。

我建议打开一个关于这个问题的雷达 (bugreporter.apple.com)。无法访问有关证书的基本信息是一个严重的问题。

如果您正在寻找从 NSURLConnection 中提取证书的示例代码,请参阅 Chapter 11 sample code来自 iOS:PTL :

- (void)connection:(NSURLConnection *)connection
  willSendRequestForAuthenticationChallenge:
  (NSURLAuthenticationChallenge *)challenge
{
  NSURLProtectionSpace *protSpace = challenge.protectionSpace;
  SecTrustRef trust = protSpace.serverTrust;
  ...
    SecCertificateRef cert = SecTrustGetCertificateAtIndex(trust, 0);
  ...

此时,cert 持有您的叶子证书。

关于ios - 如何检查 iOS 中 SSL 证书的安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9412643/

相关文章:

sql - 避免使用 SET TRUSTWORTHY ON

iphone - 导航栏后退按钮,文本未居中对齐

ios - 不同状态的 UIButton 插图

html - 本地存储可以被认为是安全的吗?

iphone - wait_fences : failed to receive reply: 10004003 in UIImagePickerController

ios - 多个 iOS 框架,如果主框架名称为 "Library Not loaded",则嵌套 "Network"问题

javascript - Cordova window.open _self 不工作但 _blank 工作

ios - 推送通知未送达

ios - 如何在 iOS 中通过 SWIFT 验证包裹已发送+送达?

security - 如何在 Openfire 上配置 OTR?