Pregunta

Bueno, quizás no con los 4 cosas, pero aquí está mi situación:

Tengo un backend ActiveMQ (que se ejecuta en el escritorio de Mac). Es una acción servidor Apache ActiveMQ Tengo que estoy usando básicamente como un servidor de eco a la cola de los registros y depurar mi cliente. El cliente es un proyecto de iPhone con una aplicación Stomp.framework hackeado usando AsyncSocket.

Qué necesito para utilizar la biblioteca AsyncSocket cacao a hablar con el servidor pisa fuerte, que más o menos tengo trabajo. Puedo enviar mensajes a las colas y las volverá a leer, así que creo que estoy bien allí.

Pero, cuando intento configurar todo para utilizar SSL (también un requisito) Me da la siguiente descripción de error del objeto NSError regrese:

kCFStreamErrorDomainSSL error -9812.

No puedo por la vida de a averiguar lo que este código de error es. Alguien tiene una pista?

Así es como puedo configurar el material SSL para AsyncSocket:

EDIT: Se ha añadido el código aquí CORRECTO. NOTA CERTS autofirmado.

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

}

Alguien tiene alguna idea? I piensan Soy la creación de propiedades de la ruta correctamente. Tal vez sea algo que ver con la configuración ActiveMQ? No he hecho ninguna otra configuración que para que el SSL a través de protocolo de pisa fuerte en ActiveMQ. No tengo un certificado o algo por el estilo. Tal vez ese es el problema?

Cualquier idea es apreciada!

¿Fue útil?

Solución

ni idea de las características específicas del código de error, pero te puedo decir que los certs que se incluyen con activemq son Noddy, destinada a comprobar solamente. Son auto firmado CERT (esencialmente no válidos), que puede lanzar una biblioteca ssl lado del cliente que intenta validar su longitud de cadena. En el prueba de SSL del agente el CERT se añade explícitamente al almacén de confianza para que el cliente puede aceptar que en lugar de intentar validarlo. Un buen comienzo sería generar certs válidos para el corredor o encontrar una manera de agregar el certificado existente al almacén de confianza utilizado por AsyncSocket (no tienen idea de cómo está configurado, sin embargo, posiblemente el código de prueba de Java ligado ayudará)

Otros consejos

referencia de transporte seguro en su Mac

Vaya a resultar códigos para ver los códigos de error. La que está recibiendo es "errSSLUnknownRootCert". (Parece confirmar la respuesta de gtully.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top