まあ、4つのことすべてではないかもしれませんが、私の状況は次のとおりです。
ActiveMQ バックエンドがあります (デスクトップ Mac で実行されています)。これは、基本的にログを追跡してクライアントをデバッグするためのエコー サーバーとして使用しているストック Apache ActiveMQ サーバーです。クライアントは、AsyncSocket を使用して Stomp.framework 実装をハッキングした iPhone プロジェクトです。
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 プロトコルを有効にする以外の構成は行いませんでした。証明書などはありません。たぶんそれが問題ですか?
どんな洞察も大歓迎です!