【问题标题】:SSL Certificate validation with AFNetworking使用 AFNetworking 进行 SSL 证书验证
【发布时间】:2014-05-09 12:57:33
【问题描述】:

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

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

默认证书验证是否仅适用于 https 协议?

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

【问题讨论】:

  • 如果是这样,我会提交一份关于它的错误报告。你不能和一个连手都没有握手的服务器握手。
  • 是的,你说的最有道理。但我正在经历一些不同的事情。

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


【解决方案1】:

我想你不明白什么是 HTTP 和 HTTPS:

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

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

【讨论】:

    猜你喜欢
    • 2017-05-27
    • 2020-10-31
    • 2015-10-25
    • 2014-03-30
    • 2020-10-12
    • 2010-11-08
    • 2019-06-14
    • 2017-06-13
    • 2019-03-29
    相关资源
    最近更新 更多