iOS上的自签名证书

3

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

原因是接受自签名证书会绕过证书链验证,这样设备就会认为任何服务器证书都有效。

  • 这是否意味着一旦iOS设备信任任何自签名证书,任何应用程序的SSL流量都不安全?
  • 如果是,苹果公司推荐如何处理这个问题(我相信我不能阻止用户出于任何原因信任自签名证书)。 我能否以某种方式检查是否信任了任何此类证书(在此示例中使用Cordova)?
  • 还是这只是适用于应用了自签名证书的连接上没有执行SSL验证的情况?
2个回答

1
在iOS上使用Cordova,如果想使用自签名证书,您需要将此代码添加到您的应用程序中。
实现NSURLRequest(DataController) + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host { return YES; } @end
这样可能就是这个意思。
原因是接受自签名证书会绕过证书链验证,从而使设备认为任何服务器证书都是有效的。
与Android不同,这是一个全局设置,一旦添加了该设置,所有验证都将被跳过。
添加此设置仅影响您的应用程序,而不影响其他应用程序,但它影响您的WebView进行的所有连接。因此,它使您的应用程序高度不安全,因为人们可以轻松地进行中间人攻击。

0

服务器上已安装SSL。因此,这是关于未由某些CA(认证机构)颁发的SSL证书。适当的证书是由一些真实的CA(如Verisign)颁发的,以便通过验证信任链来验证Android或iOS设备。

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

有关自签名证书和CA证书之间进一步澄清,请查看this SO answer


谢谢。我知道区别。也许我的问题有点误导:我一直在谈论的是客户端信任自签名证书的情况。 - Dunken
好的。那么你想知道在ssh握手期间,当客户端看到自签名证书而不是正确的证书时会发生什么? - HAK
是的,在iOS上的Cordova应用程序中。我担心Cordoba的声明。这在Android上不是这样的:在Android上,如果我信任一个s-s-cert,这并不意味着我接受任何s-s-cert。 - Dunken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接