好吧,也许不是所有 4 件事,但这是我的情况:
我有一个 ActiveMQ 后端(在我的桌面 Mac 上运行)。这是我拥有的库存 Apache ActiveMQ 服务器,我基本上将其用作回显服务器来跟踪日志并调试我的客户端。客户端是一个 iPhone 项目,它使用 AsyncSocket 进行了破解 Stomp.framework 实现。
我需要使用 AsyncSocket Cocoa 库与我或多或少工作的 Stomp 服务器对话。我可以将消息发送到队列,并将它们读回,所以我认为我在那里很好。
但是,当我尝试将所有内容设置为使用 SSL(也是一项要求)时,我从 NSError 对象中得到以下错误描述:
kCFStreamErrorDomainSSL error -9812.
我一生都无法弄清楚这个错误代码是什么。有人有线索吗?
这是我为 AsyncSocket 设置 SSL 的方法:
编辑:在此处添加了正确的代码。注意自签名证书。
//- (BOOL)onSocketWillConnect:(AsyncSocket *)sock
{
// Connecting to a secure server
NSMutableDictionary * settings = [NSMutableDictionary dictionaryWithCapacity:2];
// Use the highest possible security
[settings setObject:(NSString *)kCFStreamSocketSecurityLevelNegotiatedSSL
forKey:(NSString *)kCFStreamSSLLevel];
// Allow self-signed certificates
[settings setObject:[NSNumber numberWithBool:YES]
forKey:(NSString *)kCFStreamSSLAllowsAnyRoot];
CFReadStreamSetProperty([sock getCFReadStream],
kCFStreamPropertySSLSettings, (CFDictionaryRef)settings);
CFWriteStreamSetProperty([sock getCFWriteStream],
kCFStreamPropertySSLSettings, (CFDictionaryRef)settings);
return YES;
}
有人有想法么?我想我正确设置了流属性。也许这与 ActiveMQ 设置有关?除了在 ActiveMQ 中启用 SSL over Stomp 协议外,我没有进行任何配置。我没有证书或类似的东西。也许这就是问题所在?
任何见解表示赞赏!