【问题标题】:cmd-line tests fail with SSL certificate error命令行测试因 SSL 证书错误而失败
【发布时间】:2014-01-31 04:23:31
【问题描述】:
在遇到一系列与覆盖刷新(已修复)和测试输出被消耗(未修复)相关的问题后,我决定尝试使用 Cedar 和 GH-Unit 作为 XCTest 的替代方案。
不幸的是,这带来了一个新问题:
- 从 IDE 启动时一切正常。
- 从命令行启动时,出现 SSL 证书错误
错误总结:
Error Domain=com.biasedbit.http Code=60 "Peer certificate cannot be authenticated with given CA certificates"
我该如何解决这个问题? (以及额外的点)为什么从 IDE 启动时会知道证书,而不是从命令行启动?
【问题讨论】:
标签:
ios
objective-c
ssl
cedar
gh-unit
【解决方案1】:
需要在命令行中明确指定应允许无效/自签名 SSL 证书。我仍然不确定为什么在通过 IDE 运行时不需要这样做,但这是另一个问题。
设置接受无效证书
- 对于核心苹果 API,这可能有点棘手。它似乎是一个私有 API,或者是前面的块。
- AFNetworking 支持此功能。
对于我正在使用的网络堆栈(BBHTTP,顺便说一句,它非常好,而且似乎被低估了),这很简单:
[[BBHTTPRequest postToURL:_serviceUrl data:[envelope data] contentType:@"text/xml"] setup:^(BBHTTPRequest* request)
{
request.allowInvalidSSLCertificates = YES;
} execute:^(BBHTTPResponse* response)
{
if (_logResponses)
{
LogDebug(@"\n\n$$$$$$$$$ Got response: %@", [[NSString alloc] initWithData:[response content] encoding:NSUTF8StringEncoding]);
}
//etc .. . .
} error:^(NSError* error)
{
//etc .. . .
}];