Frage

Nun, vielleicht nicht mit allen 4 Dingen, aber hier ist meine Situation:

Ich habe einen ActiveMQ-Backend (läuft auf meinem Desktop Mac). Es ist ein Lager Apache ActiveMQ-Server habe ich, die ich im Grunde als Echo Server Schwanz bin mit der Protokolle und debuggen mein Mandant. Der Kunde ist ein iPhone-Projekt mit einer zerhackt Stomp.framework Implementierung mit AsyncSocket.

Ich brauche AsyncSocket Cocoa-Bibliothek verwenden, um den Stomp-Server zu sprechen, die ich arbeiten mehr oder weniger haben. Ich kann Nachrichten an Warteschlangen senden, und lesen Sie sie wieder heraus, so dass ich glaube, ich bin gut da.

Aber, wenn ich versuche, alles einzurichten Verwendung von SSL (auch eine Anforderung) ich die folgende Fehlerbeschreibung erhalten aus dem NSError Objekt, das ich zurück:

kCFStreamErrorDomainSSL error -9812.

Ich kann nicht für das Leben von mir herauszufinden, was dieser Fehlercode ist. Wer eine Ahnung hat?

Hier ist, wie ich ein Setup des SSL-Material für AsyncSocket:

EDIT: HIER DEN RICHTIGEN Code hinzugefügt. HINWEIS selbst signiertes CERTS.

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

}

Wer irgendwelche Ideen? I denken Ich bin richtig die Stream-Eigenschaften einstellen. Vielleicht ist es etwas mit dem ActiveMQ-Setup zu tun? Ich habe noch keine andere Konfiguration als das SSL über Stomp-Protokoll in ActiveMQ zu ermöglichen. Ich habe nicht ein Zertifikat oder so etwas. Vielleicht ist das Problem?

Einsicht ist gefragt!

War es hilfreich?

Lösung

keine Ahnung von den Besonderheiten des Fehlercodes, aber ich kann Ihnen sagen, dass die Zertifikate, die mit activemq versenden sind noddy, vorgesehen für nur testen. Sie sind selbst Zert unterzeichnet (im Wesentlichen ungültig), die eine Client-Seite ssl Bibliothek werfen kann, die ihre Kettenlänge zu bestätigen versucht. In der ssl Broker Test die cert wird in der Trust Store ausdrücklich hinzugefügt, so dass der Kunde es anstatt zu versuchen, akzeptieren kann es zu validieren. Ein guter Start wäre gültig certs für den Makler zu erzeugen oder einen Weg finden, um das bestehende cert in der Trust Store von AsyncSocket (haben keine Ahnung, wie dass, obwohl konfiguriert ist, möglicherweise der verlinkte Java-Test-Code wird dazu beitragen) zum Hinzufügen

Andere Tipps

Sichere Transport Verweis auf Ihrem Mac

Blättern Sie nach unten Codes führen die Fehlercodes zu sehen. Derjenige Sie bekommen ist „errSSLUnknownRootCert“. (Scheint gtully Antwort zu bestätigen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top