【问题标题】:Self-signed certificates on iOSiOS 上的自签名证书
【发布时间】:2018-06-07 15:03:46
【问题描述】:

https://cordova.apache.org/docs/en/8.x/guide/appdev/security/index.html 提到

原因是接受自签名证书会绕过 证书链验证,允许任何服务器证书 被设备视为有效。

  • 这是否意味着只要 iOS 设备信任任何自签名证书,任何 SSL 流量(来自任何应用程序)都是不安全的?
  • 如果是,Apple 推荐的处理方法是什么(我 相信我不能阻止用户信任自签名 任何原因的证书)。我可以以某种方式检查是否有这样的 证书是可信的(在本例中我使用 Cordova)。
  • 或者这是否意味着仅适用于应用自签名证书而不执行 SSL 验证的连接?

【问题讨论】:

    标签: ios cordova self-signed


    【解决方案1】:

    在 iOS 上使用 Cordova 时,如果您想使用自签名证书,您必须将此代码添加到您的应用程序中。

    @implementation NSURLRequest(DataController) + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host { return YES; } @end

    大概就是这个意思

    原因是接受自签名证书会绕过 证书链验证,允许任何服务器证书 被设备视为有效。

    与 Android 不同,这是全有或全无,一旦您添加跳过所有验证。

    添加仅影响您的应用程序,而不影响其他应用程序,但它会影响您的 WebView 所做的所有连接。因此,它使您的应用程序高度不安全,因为人们很容易在中间人攻击。

    【讨论】:

      【解决方案2】:

      SSL 已安装在服务器上。所以这是关于不是由某些 CA(认证机构)颁发的 SSL 证书。正确的证书是由一些真实的 CA 颁发的证书,例如 Verisign,以便 Android 或 iOS 设备可以通过验证信任链来验证它。

      这不涉及安装在移动设备本身(iOS 或 Android)上的任何证书。

      有关自签名证书和 ca 证书之间的进一步说明,请查看this SO answer

      【讨论】:

      • 谢谢。我知道区别。也许我的问题有点误导:我一直在谈论客户信任自签名证书的情况。
      • 好的。所以你想知道在 ssh 握手期间客户端看到的是自签名证书而不是正确的证书时会发生什么?
      • 是的,如果是 iOS 上的 Cordova 应用程序。我对科尔多瓦的声明感到担忧。在 Android 上不是这样:在 Android 上,如果我信任 s-s-cert,这并不意味着我接受任何 s-s-cert。
      猜你喜欢
      • 2017-03-15
      • 2012-12-10
      • 2018-12-04
      • 2014-05-05
      • 2012-07-19
      • 2014-03-10
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多