Question

Eh bien, peut-être pas avec les 4 choses, mais voici ma situation:

J'ai un back-end ActiveMQ (en cours d'exécution sur mon ordinateur de bureau Mac). Il est un stock serveur Apache ActiveMQ je que je me sers essentiellement comme un serveur d'écho à la queue les journaux et déboguer mon client. Le client est un projet d'iPhone avec un piraté en utilisant la mise en œuvre Stomp.framework AsyncSocket.

Je dois utiliser la bibliothèque AsyncSocket Cocoa pour parler au serveur Stomp, que je plus ou moins avoir à travailler. Je peux envoyer des messages à des files d'attente, et les relire, donc je pense que je suis bien là.

Mais, lorsque je tente de mettre tout en place pour utiliser SSL (également une exigence) Je reçois la description d'erreur suivante de l'objet NSError je reviens:

kCFStreamErrorDomainSSL error -9812.

Je ne peux pas pour la vie de me comprendre ce que ce code d'erreur est. Quelqu'un at-il un indice?

Voici comment je configurer les choses SSL pour AsyncSocket:

EDIT: introduit en CODE ICI. NOTE CERTS autosignés.

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

}

Quelqu'un a des idées? I pense Je définir les propriétés de flux correctement. Peut-être qu'il ya quelque chose à voir avec la configuration ActiveMQ? Je ne l'ai pas toute configuration autre que pour activer le protocole SSL sur le protocole Stomp dans ActiveMQ. Je n'ai pas un certificat ou quelque chose comme ça. Peut-être est le problème?

Toute idée est appréciée!

Était-ce utile?

La solution

aucune idée sur les détails du code d'erreur, mais je peux vous dire que les certs livrés avec ActiveMQ sont Noddy, destinée à tester uniquement. Ils sont auto-signé certs (essentiellement invalides) qui peut lancer une bibliothèque ssl côté client qui tente de valider leur longueur de chaîne. Dans la section test courtier ssl le cert est explicitement ajouté au magasin de confiance afin que le client peut l'accepter plutôt que de tenter de le valider. Un bon début serait de générer certs valides pour le courtier ou de trouver un moyen d'ajouter le cert existant au magasin de confiance utilisé par AsyncSocket (avoir aucune idée qui est configuré si, peut-être le code de test Java lié aidera)

Autres conseils

référence de transport sécurisé sur votre Mac

Faites défiler vers le bas pour résultat des codes pour voir les codes d'erreur. Celui que vous obtenez est « errSSLUnknownRootCert ». (Semble confirmer la réponse de gtully.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top