我需要你的帮助:)
我正在将我的应用程序中的 http 请求更改为 https 请求。现在我已经使用了ASIHTTPRequest并遵循此tutorial 。你要知道,我在 https 和 ssl 领域完全是初学者。我真的很感谢任何帮助。
这是我的http请求的代码:
- (void)fetchDataFromServer{
// Create Instance
ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:url];
// Parameter der POST Anfrage setzen
[request setPostValue:@"anything" forKey:@"app_action"];
[request setValidatesSecureCertificate:NO]; // no certificate so far
request.delegate = self; // assign delegate
[request startAsynchronous]; // send request
}
效果很好。但现在我需要保护数据连接,因此我必须使用 https。
如何实现这个需求?是ASIHTTPRequest这是正确的事情,而且它甚至支持这一点?关于服务器中的证书,我需要了解哪些信息?
请告诉我你所知道的一切:)
非常感谢你 - 你是最棒的。
问候 克里斯
最佳答案
证书验证是一件好事,几乎应该始终进行。您无需针对 HTTP 请求禁用它。
这条规则实际上只有一个异常(exception)。如果您必须连接到没有由受信任的证书颁发机构正确签名的证书的 HTTPS Web 服务,则必须关闭证书验证。
为什么您的网络服务可能没有有效的证书
- 您被黑客攻击了!这就是证书和证书验证的原因。
- Web 服务正在配置错误的 SSL 服务器上运行。
- 证书已过期,服务器未保持运行。
- 网络服务的所有者成本太低,无法支付由受信任的证书颁发机构签署其证书的费用。
- 不向公众公开的开发服务器可能不值得费力去获取签名证书。
如何知道网络服务是否没有正确签名的证书
- 在网络浏览器中访问网络服务,看看是否收到证书错误。
- 检查您的应用中是否存在无效证书错误。
关闭证书验证的替代方法
- 获取由受信任的证书颁发机构签署的证书。
- 创建您自己的证书颁发机构,使用您自己的证书颁发机构签署您的证书,并将您的证书颁发机构安装为 iOS 设备上受信任的证书颁发机构。
关于iphone - 在 XCode 中发送 HTTPS 请求 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12859427/