1 votes

OS X 10.11 CardDAV avec certificat auto-signé

Le serveur CardDAV auquel j'essaie de me connecter utilise un certificat auto-signé. Malheureusement, je ne peux rien y faire.

Dans les versions précédentes d'OS X, lorsque je me connectais à ce serveur, le système me demandait si je voulais me connecter en utilisant ce certificat non sécurisé. Je pouvais accepter et continuer.

En essayant la même chose dans la version actuelle d'OS X, cela ne fonctionne pas. Le fichier Contacts.app ne montre qu'un problème de connexion.

En regardant les journaux dans Console, j'ai trouvé cette erreur :

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?
    }

Pas d'alerte, pas de demande de procédure de toute façon.

J'ai pensé que je pourrais télécharger le certificat, l'ajouter au trousseau de clés et définir la confiance par défaut sur "Always Trust".

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

J'ai obtenu le certificat, je l'ai ajouté au trousseau de clés, j'ai défini la confiance et j'ai réessayé - c'est la poisse : Même erreur à nouveau et toujours pas de dialogue de confirmation.

Maintenant, ma question est la suivante : existe-t-il un moyen de permettre à Contacts.app de se connecter à mon serveur ou de ramener la boîte de dialogue de confirmation ?

EDIT

Comme demandé, voici les détails de ma connexion 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

1voto

Khürt Williams Points 125

Selon la section Améliorations de la sécurité des notes de préversion de OS X 10.11 sur Site web des développeurs d'Apple

App Transport Security (ATS)

App Transport Security (ATS) applique les meilleures pratiques dans les connexions sécurisées entre une application et son back-end. ATS empêche la divulgation accidentelle, fournit un comportement par défaut sécurisé et est facile à adopter ; il est également activé par défaut dans OS X v10.11 et iOS 9. Vous devriez adopter ATS dès que possible, que vous créiez une nouvelle application ou que vous mettiez à jour une application existante.

Si vous développez une nouvelle application, vous devez utiliser exclusivement HTTPS. Si vous disposez d'une application existante, vous devez utiliser HTTPS autant que possible dès maintenant et élaborer un plan pour migrer le reste de votre application dès que possible. En outre, vos communications par le biais d'API de niveau supérieur doivent être cryptées à l'aide de TLS version 1.2 avec secret de transmission. Si vous tentez d'établir une connexion qui ne respecte pas cette exigence, une erreur est générée. Si votre application doit effectuer une requête vers un domaine non sécurisé, vous devez spécifier ce domaine dans le fichier Info.plist de votre application.

0voto

Richard Marquez Points 387

Ouvrez le Keychain Access.app et ajoutez votre certificat auto-signé à l'adresse suivante login groupe. Ensuite, double-cliquez dessus, développez le groupe Confiance et définir Toujours faire confiance pour tout.

Pour retirer votre certificat auto-signé, cliquez sur l'icône de verrouillage à gauche de la barre d'URL du navigateur (Safari/Chrome), sélectionnez Certificat et faites glisser la grande icône du certificat dans le Finder. Ensuite, à partir de Finder, vous pouvez la faire glisser dans Keychain Access.app sous login (ou System ).

OU à partir de la ligne de commande :

sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" my-self-signed-cert.pem

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X