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
openssl s_client -connect host:port