OS X 10.11 CardDAV mit selbstsigniertem Zertifikat

0

Der CardDAV-Server, zu dem ich eine Verbindung herstellen möchte, verwendet ein selbstsigniertes Zertifikat. Leider kann ich nichts dagegen tun.

In früheren OS X-Versionen wurden Sie beim Herstellen einer Verbindung zu diesem Server gefragt, ob Sie eine Verbindung mit diesem unsicheren Zertifikat herstellen möchten. Ich könnte akzeptieren und weitermachen.

Wenn Sie dasselbe in der aktuellen OS X-Version versuchen, funktioniert dies nicht. Die Contacts.app zeigt nur ein Verbindungsproblem.

Beim Durchsuchen der Protokolle in der Konsole konnte ich folgenden Fehler feststellen:

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

Keine Warnung, keine Bitte, trotzdem fortzufahren.

Jetzt dachte ich, ich könnte das Zertifikat herunterladen, es zum Schlüsselbund hinzufügen und die Standardvertrauensstellung auf "Immer vertrauen" setzen.

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

Habe das Zertifikat erhalten, es zum Schlüsselbund hinzugefügt, die Vertrauenswürdigkeit festgelegt und es erneut versucht - Schade: Der gleiche Fehler erneut und noch kein Bestätigungsdialog.

Jetzt ist meine Frage: Gibt es eine Möglichkeit, Contacts.app eine Verbindung zu meinem Server herzustellen oder den Bestätigungsdialog zurückzuholen?

BEARBEITEN

Wie gewünscht, sind hier meine SSL-Verbindungsdaten:

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
quelle
Verwendet das selbstsignierte Zertifikat das SSL- oder TLS-Protokoll? Welche Version von SSL oder TLS? Welche Cipher Suite wird verwendet? Können Sie die Ausgabe vonopenssl s_client -connect host:port
Khürt Williams

Antworten:

1

Informationen hierzu finden Sie im Abschnitt "Sicherheitsverbesserungen" in den Vorabversionshinweisen zu OS X 10.11 auf der Entwickler-Website von Apple

App Transport Security (ATS)

App Transport Security (ATS) setzt Best Practices für die sicheren Verbindungen zwischen einer App und ihrem Back-End durch. ATS verhindert versehentliche Offenlegung, bietet sicheres Standardverhalten und ist einfach anzuwenden. Es ist auch in OS X 10.11 und iOS 9 standardmäßig aktiviert. Sie sollten ATS so schnell wie möglich einführen, unabhängig davon, ob Sie eine neue App erstellen oder eine vorhandene aktualisieren.

Wenn Sie eine neue App entwickeln, sollten Sie ausschließlich HTTPS verwenden. Wenn Sie bereits über eine App verfügen, sollten Sie HTTPS so oft wie möglich verwenden und so schnell wie möglich einen Plan für die Migration des Restes Ihrer App erstellen. Darüber hinaus muss Ihre Kommunikation über übergeordnete APIs mit TLS Version 1.2 mit Vorwärtsgeheimnis verschlüsselt werden. Wenn Sie versuchen, eine Verbindung herzustellen, die dieser Anforderung nicht entspricht, wird ein Fehler ausgegeben. Wenn Ihre App eine Anfrage an eine unsichere Domain stellen muss, müssen Sie diese Domain in der Info.plist-Datei Ihrer App angeben.

Khürt Williams
quelle
Als Entwickler weiß ich darüber Bescheid. Dies ist jedoch keine sich entwickelnde Frage. Ich frage nach einem von einem System bereitgestellten Service. Ich hoffe, dass OS X immer noch abwärtskompatibel ist oder dass es eine Möglichkeit gibt, dies zu erreichen.
Julian F. Weinert