Domanda

Bene, forse non con tutte e 4 le cose, ma qui è la mia situazione:

Ho un backend ActiveMQ (in esecuzione sul mio desktop Mac). Si tratta di un server Apache ActiveMQ magazzino ho che sto praticamente utilizzando come un server di eco alla coda i log ed eseguire il debug il mio cliente. Il cliente è un progetto iPhone con un'implementazione hacked fino Stomp.framework utilizzando AsyncSocket.

Ho bisogno di usare biblioteca AsyncSocket cacao per comunicare con il server Stomp, che più o meno hanno lavoro. Posso inviare messaggi alle code, e leggerle di nuovo fuori, quindi penso che io sono bene lì.

Ma, quando provo a impostare tutto per utilizzare SSL (anche un requisito) ottengo il seguente descrizione di errore fuori dell'oggetto NSError torno:

kCFStreamErrorDomainSSL error -9812.

Non posso per la vita di me capire che cosa questo codice di errore è. Qualcuno ha un indizio?

Ecco come ho configurato la roba SSL per AsyncSocket:

EDIT: aggiunto il codice corretto QUI. NOTA CERT auto-firmato.

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

}

Qualcuno ha qualche idea? I pensare che sto impostando le proprietà del flusso in modo corretto. Forse è qualcosa a che fare con la messa a punto ActiveMQ? Non ho fatto alcuna configurazione diversa per abilitare il protocollo SSL su protocollo Stomp in ActiveMQ. Non ho un certificato o qualcosa di simile. Forse questo è il problema?

Tutta la comprensione è apprezzato!

È stato utile?

Soluzione

idea sugli aspetti specifici del codice di errore, ma posso dirvi che i certs forniti con ActiveMQ sono Noddy, destinata a testare solo. Sono auto firmato certs (essenzialmente non valide), che può lanciare una libreria SSL lato client che tenta di convalidare la loro lunghezza della catena. Nel prova ssl mediatore il CERT è esplicitamente aggiunti al negozio di fiducia in modo che il cliente può accettare piuttosto che tentare di convalidarlo. Un buon inizio sarebbe quello di generare certs validi per il broker o capire un modo per aggiungere il CERT esistente al negozio di fiducia usata da AsyncSocket (non hanno alcuna idea di come è configurato, però, forse il codice di prova Java legato contribuirà)

Altri suggerimenti

di riferimento Trasporto sicuro sul vostro Mac

Scorrere verso il basso per portare i codici per vedere i codici di errore. Quello che stai ricevendo è "errSSLUnknownRootCert". (Sembra confermare la risposta di gtully.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top