CardDAV do OS X 10.11 com certificado autoassinado

0

O servidor CardDAV ao qual estou tentando conectar usa um certificado autoassinado. Infelizmente não posso fazer nada a respeito.

Nas versões anteriores do OS X, ao conectar-se a este servidor, o sistema perguntou se eu queria conectar usando este certificado não seguro. Eu poderia aceitar e continuar.

Ao tentar a mesma coisa na versão atual do OS X, isso não funciona. O Contacts.app mostra apenas um problema de conexão.

Ao examinar os logs no console, eu encontrei este erro:

02/12/15 00:55:39,637 Contacts[39186]: [CardDAVPlugin-ERROR] -getPrincipalInfo:[_controller discoverServer https://user@host:port(null)] 
    Error Domain=NSURLErrorDomain
    Code=-1200
    "An SSL error has occurred and a secure connection to the server cannot be made."
    UserInfo={
        _kCFStreamErrorCodeKey=-9801,
        NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?
    }

Sem alerta, sem pedir para prosseguir de qualquer maneira.

Agora, pensei que poderia fazer o download do certificado, adicioná-lo ao chaveiro e definir a confiança padrão como "Sempre confio".

echo -n | openssl s_client -connect host:port | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > carddav.cer

Obteve o certificado, adicionou-o ao chaveiro, estabeleceu a confiança e tentou novamente - chatice: O mesmo erro novamente e ainda sem caixa de diálogo de confirmação.

Agora, minha pergunta é: existe alguma maneira de permitir que o Contacts.app se conecte ao meu servidor ou para retornar a caixa de diálogo de confirmação?

EDITAR

Conforme solicitado, aqui estão os detalhes da minha conexão SSL:

CONNECTED(00000003)
depth=0 CN = , O = , OU = , ST = , C = , L = , emailAddress = 
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = , O = , OU = , ST = , C = , L = , emailAddress = 
verify return:1
---
Certificate chain
 0 s:/CN=/O=/OU=/ST=/C=/L=/emailAddress=
   i:/CN=/O=/OU=/ST=/C=/L=/emailAddress=
---
Server certificate
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
subject=/CN=/O=/OU=/ST=/C=/L=/emailAddress=
issuer=/CN=/O=/OU=/ST=/C=/L=/emailAddress=
---
No client certificate CA names sent
---
SSL handshake has read 1198 bytes and written 658 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : SSLv3
    Cipher    : AES256-SHA
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1449069604
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
DONE
Julian F. Weinert
fonte
O certificado autoassinado está usando o protocolo SSL ou TLS? Qual versão do SSL ou TLS? Qual suíte de cifras está sendo usada? Você pode fornecer a saída deopenssl s_client -connect host:port
Khürt Williams

Respostas:

1

De acordo com a seção Security Enhancements das notas de pré-lançamento do OS X 10.11 no site da Apple Developer

App Transport Security (ATS)

O App Transport Security (ATS) aplica as práticas recomendadas nas conexões seguras entre um aplicativo e seu back-end. O ATS evita a divulgação acidental, fornece comportamento padrão seguro e é fácil de adotar; também está ativado por padrão no OS X v10.11 e iOS 9. Você deve adotar o ATS o mais rápido possível, independentemente de estar criando um novo aplicativo ou atualizando um aplicativo existente.

Se você estiver desenvolvendo um novo aplicativo, use HTTPS exclusivamente. Se você já possui um aplicativo, deve usar o HTTPS o máximo possível no momento e criar um plano para migrar o restante do aplicativo o mais rápido possível. Além disso, sua comunicação por meio de APIs de nível superior precisa ser criptografada usando o TLS versão 1.2 com sigilo direto. Se você tentar fazer uma conexão que não siga esse requisito, será gerado um erro. Se o seu aplicativo precisar fazer uma solicitação para um domínio não seguro, você deverá especificar esse domínio no arquivo Info.plist do seu aplicativo.

Khürt Williams
fonte
Como desenvolvedor, eu sei disso. Mas essa não é uma questão em desenvolvimento. Estou perguntando sobre um serviço fornecido pelo sistema. Espero que o OS X ainda seja compatível com versões anteriores ou que haja uma possibilidade de conseguir isso.
Julian F. Weinert