Pergunta

Bem, talvez não com todos os 4 coisas, mas aqui está a minha situação:

Eu tenho um backend ActiveMQ (em execução no meu desktop Mac). É um servidor de estoque Apache ActiveMQ eu tenho que estou usando basicamente como um servidor de eco à cauda os logs e depurar o meu cliente. O cliente é um projeto de iPhone com um hackeou Stomp.framework implementação usando AsyncSocket.

Eu preciso usar biblioteca AsyncSocket Cacau para conversar com o servidor Stomp, que mais ou menos se trabalhar. Posso enviar mensagens para filas, e lê-los de volta, então eu acho que eu sou bom lá.

Mas, quando eu tentar definir tudo até SSL uso (também uma exigência) recebo a seguinte descrição de erro fora do objeto NSError eu voltar:

kCFStreamErrorDomainSSL error -9812.

Não consigo para a vida de me descobrir o que este código de erro é. Alguém tem uma pista?

Aqui está como eu configurar o material SSL para AsyncSocket:

EDIT: adicionado o código correto AQUI. NOTA CERTS em Self Signed.

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

}

Alguém tem alguma idéia? I pensar Eu estou definindo as propriedades de fluxo corretamente. Talvez seja algo a ver com a configuração ActiveMQ? Eu não fiz qualquer configuração diferente para habilitar o SSL sobre protocolo Stomp em ActiveMQ. Eu não tenho um certificado ou qualquer coisa assim. Talvez que é o problema?

Qualquer visão é apreciada!

Foi útil?

Solução

nenhuma idéia sobre as especificidades do código de erro, mas posso dizer-lhe que os certificados que acompanham o activemq são noddy, destina-se apenas para teste. Eles são auto-assinado certs (essencialmente inválidos), que pode jogar uma biblioteca SSL lado do cliente que tenta validar sua cadeia de comprimento. Na teste corretor SSL o certificado é explicitamente adicionado ao armazenamento de confiança para que o cliente pode aceitá-la ao invés de tentar validá-lo. Um bom começo seria gerar certificados válidos para o corretor ou descobrir uma maneira de adicionar o certificado existente para o armazenamento de confiança usado por AsyncSocket (não têm idéia de como isso é configurado, porém, possivelmente, o código de teste java ligada irá ajudar)

Outras dicas

referência transporte seguro noreferrer nofollow no seu Mac

Vá até resultar códigos para ver os códigos de erro. O que você está recebendo é "errSSLUnknownRootCert". (Parece responder a confirmação do gtully.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top