الكاكاو، ستومب، ActiveMQ، اي فون، SSL، وAsyncSocket مساعدة مطلوب

StackOverflow https://stackoverflow.com/questions/380145

سؤال

حسنا، ربما ليس مع كل شيء 4، ولكن هنا وضعي:

ولدي الخلفية ActiveMQ (يعمل على سطح المكتب ماك). إنها الأسهم أباتشي ActiveMQ الخادم لدي الذي أستخدمه في الأساس كخادم صدى لذيل السجلات وتصحيح موكلي. العميل هو مشروع فون مع تنفيذ Stomp.framework اختراق حتى باستخدام AsyncSocket.

وأنا بحاجة إلى استخدام مكتبة AsyncSocket الكاكاو لاجراء محادثات مع خادم ستومب، وأنا أكثر أو أقل يكون العمل. يمكنني إرسال رسائل إلى قوائم الانتظار، وقراءتها مرة أخرى للخروج، لذلك أعتقد أنني جيدة هناك.

ولكن، عندما أحاول وضع كل شيء لاستخدام SSL (أيضا شرط) أحصل على وصف الخطأ التالية من الكائن NSError أعود:

kCFStreamErrorDomainSSL error -9812.

وأنا لا يمكن للحياة لي معرفة ما هو رمز الخطأ هذا. أي شخص لديه أدنى فكرة؟

وهنا هو كيف يمكنني إعداد الاشياء SSL لAsyncSocket:

وتحرير: الاضافى THE CODE الصحيح هنا. ملاحظة موتس موقعة ذاتيا.

//- (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;

و}

وأي شخص يحصل على أي أفكار؟ I <م> التفكير أنا إعداد خصائص الدفق بشكل صحيح. ربما هو أن تفعل شيئا مع الإعداد ActiveMQ؟ أنا لم أفعل أي تكوين آخر غير لتمكين SSL عبر بروتوكول ستومب في ActiveMQ. ليس لدي شهادة أو أي شيء من هذا القبيل. ربما هذه هي المشكلة؟

وهو محل تقدير أي تبصر!

هل كانت مفيدة؟

المحلول

وأي فكرة على تفاصيل رمز الخطأ ولكن استطيع ان اقول لكم ان موتس التي تأتي مع activemq هي noddy، وتهدف لاختبار فقط. هم النفس وقعت موتس (غير صالحة أساسا) والتي يمكن رمي مكتبة SSL العميل الذي يحاول التحقق من صحة طول السلسلة الخاصة بهم. في في يضاف اختبار وسيط خدمة تصميم المواقع سيرت صراحة إلى مخزن الثقة بحيث يمكن للعميل استعرض بدلا من محاولة التحقق من صحة ذلك. سيكون بداية جيدة أن يكون لتوليد موتس صالحة للوسيط أو يجدوا طريقة لإضافة سيرت القائمة إلى مخزن الثقة التي تستخدمها AsyncSocket (ليس لدي فكرة كيف تم تكوينه على الرغم من، وربما سوف رمز اختبار جافا مرتبطة يساعد)

نصائح أخرى

<وأ href = "HTTP: // ملف: ///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.CoreReference.docset/Contents/Resources/Documents/documentation/Security/Reference/secureTransportRef/Reference/reference هتمل "يختلط =" نوفولو noreferrer "> مرجع النقل الآمنة على جهاز ماك

وانتقل لأسفل إلى نتيجة رموز لرؤية رموز الخطأ. واحد الذي تحصل عليه هو "errSSLUnknownRootCert". (ويبدو أن تأكيد الجواب gtully ل.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top