苹果会批准使用自签名证书进行HTTPS通信的应用程序吗?

3

我对移动应用开发和HTTPS非常陌生,请多多包涵... 我需要您的建议!

我的iPhone应用程序通过使用自签名证书与服务器进行HTTPS通信。

为了解决警告消息显示服务器不受信任的问题,我使用了NSURLConnection委托方法和以下方法:

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
    {
        [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
    }

    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}
  1. 我的第一个问题是:苹果是否会批准这种方法?这是在与使用自签名证书的服务器通信时处理HTTPs请求的允许且合法的方式吗?

  2. 当使用上述方法以同意连接到不受信任的服务器时,我的数据是否会通过HTTPs发送,并且是否会被加密?


1
没有任何问题的方法可能会导致被拒绝。 - Jitendra Singh
无论如何,苹果公司会批准或拒绝他们想要的任何东西,因此任何关于“我的应用程序是否会在AppStore中被批准/拒绝”,这样的问题都是无法回答的。 - user529758
2个回答

2

人们经常这样做来使用苹果应用程序,好或坏,但并不会被应用商店拒绝。然而,更安全的方法是使用(1)官方签名证书或(2)让您的应用程序仅接受您自己签名的证书。


这种方法缺乏安全性,其危害不可低估。流量会很容易被中间人攻击截取(例如,如果用户使用公共 Wi-Fi)。请注意,有一些签名机构可以免费签发基本证书,并且检查服务器的自签名证书是否属于你同样是安全的。因此,没有理由使用这种简陋且不安全的方法。 - pmdj
Yusuf,非常感谢您的回复!得知人们经常这样做而且苹果不会拒绝它对我很有帮助。您提到了第二种方法,我现在正在尝试学习如何让我的应用程序接受自己签名的证书。为此,我下载了ASIHTTPRequest,但无法弄清楚如何将我的自签名证书附加到请求中。您是否知道是否有逐步教程来说明如何做到这一点? - InterestedDev
如果您正在使用ASIHTTPRequest,则这位用户已经提供了答案。 - Yusuf X
谢谢Yusuf!我试过那个了…我提取了身份,但与ASIHTTPRequest一起使用时仍会产生错误。当与NSURLConnection一起使用此相同的标识时非常好用。奇怪…嗯,我将继续使用NSURLConnection。谢谢! - InterestedDev

1
  1. 没有任何方法会导致被拒绝的问题。
  2. 如果请求是POST类型,则数据将被加密。但如果需要更高的安全性,您可以添加更多的加密来保护您的数据。

Jitendra,非常感谢您的回复。我正在使用GET方法而不是POST。请告诉我,在使用(HTTPS)GET并通过查询字符串将数据发送到服务器时,这些值是否不会被SSL加密? - InterestedDev
1
@Sergey,HTTPS GET查询参数也是加密的,但它们可能以未加密的形式存储在服务器日志中。因此,这比未加密的HTTP流量风险要小,但根据您的Web服务器日志的安全性而定,它可能比HTTPS POST不够安全。 - Nate

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