对于我的应用程序,我有一个受信任的服务器证书,我想访问我的代码中的证书信息。我的目的是检查url主机名和证书主机名是否匹配。如果它们匹配,那么我将建立连接,否则我将抛出错误。
答案 0 :(得分:1)
您使用NSURLConnectionDelegate
方法-connection:canAuthenticateAgainstProtectionSpace:
和-connection:didReceiveAuthenticationChallenge:
在服务器信任保护空间中接收身份验证质询。这就是您有机会检查证书的地方。
不要只检查主机名是否匹配!任何人都可以为任何服务器颁发证书,甚至还为*.*.com
和类似的通配符颁发了证书。您需要决定是否信任使用证书颁发的身份:这就是为什么称为服务器信任身份验证。
我如何信任凭证书发出的身份
您需要评估服务器信任。您的策略用于信任证书的内容不是我想要预测的内容,但是您使用API评估信任的方式在Apple的Certificate, Key and Trust Services programming guide中有所涵盖。
如何访问证书中的某些信息
可用的API记录在Certificate, Key and Trust Services reference中。请注意,iOS上没有很多选项可用于从证书中提取数据 - 当然不会像Mac上那样多。