使用AFNetworking进行SSL证书验证

时间:2014-05-09 12:57:34

标签: ios objective-c nsurlconnection afnetworking afnetworking-2

我了解SSL证书的使用和必要性。我正在寻找http协议和SSL证书之间以及https和SSL证书之间关系的详细解释。

在AFNetworking中定义_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_允许无效证书。 假设未设置此标志,则库应默认拒绝无效证书。但是,如果服务器端没有安装证书怎么办?我看到我可以使用http协议访问没有证书的服务器。

是否仅针对https协议进行默认证书验证?

我想只访问那些带有证书且通过http和https有效的服务器?是否需要此功能?如果可以的话?

1 个答案:

答案 0 :(得分:2)

我认为您不了解HTTP和HTTPS的含义:

  • http是与没有加密的服务器通信的会话协议。一切都是明确发送的,也无法验证服务器的真实性(即服务器响应确实具有正确的主机名)。在这种情况下,服务器不需要SSL证书。
  • 如果要确保与服务器的通信已加密,则使用https。为此,服务器需要SSL证书,在通过HTTP会话发送任何内容之前,将发生握手,允许客户端获取服务器的SSL证书以加密发送的数据。因此,SSL证书仅用于HTTPS连接。

还可以验证服务器的真实性,具体取决于所使用的SSL证书。所有浏览器(默认情况下在iOS上,除非您在应用程序中明确更改此选项)将仅接受已知证书颁发机构颁发的SSL证书。这样,您可以确保服务器确实位于您请求的主机名。根据SSL证书,服务器的所有者也可能被验证(即服务器确实属于它声称属于的公司)。