2010-12-11 26 views
3

En ajoutant au dictionnaire kCFStreamPropertySSLSettings les habituels kCFStreamSSLValidatesCertificateChain, kCFStreamSSLAllowsAnyRoot, etc. - Je peux faire fonctionner l'authentification client du serveur &.iOS - gestion des racines approuvées sur une connexion SSL

Cependant, je ne vois pas comment je peux obtenir ce grain plus fin; à savoir

  1. détecter un cert de serveur/CA jamais vu - et d'intensifier l'acceptation à l'utilisateur.
  2. valider un certificat du serveur auquel je suis connecté par rapport à une liste de confiance étroite (par exemple, le certificat appris lors d'une connexion précédente).

I.e. ce que je cherche est 1) quelque chose comme SSLSetTrustedRoots() sur MacOSX et 2) quelque chose comme les callbacks d'erreur/domaine dans kCFStreamErrorDomainSSL (par exemple errSSLPeerCertUnknown) - aucun qui semble défini/accessible sur l'ipad/iphone 4.2.1.

Ou est-ce qu'il me manque quelque chose? Ou dois-je faire quelque chose d'explicite sur le rappel? Exemples appréciés (l'exemple AdvancedURLConnections n'est pas tout à fait applicable - j'ai une socket raw (IRC)).

Merci,

Dw.

Répondre

1

Définissez kCFStreamSSLValidatesCertificateChain sur kBooleanFalse et vérifiez manuellement le certificat avec les API.

Plus précisément, utilisez

SecTrustCreateWithCertificates 

avec les certificats que vous obtenez de

CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates); 

, vous pouvez ensuite utiliser

SecTrustSetAnchorCertificates 

et enfin appeler

SecTrustEvaluate 
+0

Heath - avez-vous un code d'échantillon? Les fonctions mentionnées n'ont pas d'échantillon Apple associé (sur leur site), et Graham Lee ne couvre pas Coca Application Security. J'ai l'impression qu'Alice dégringole dans un trou de lapin. – jww

+0

Consultez mon blog sur le sujet. Il couvre certaines de ces questions. https://blog.asolutions.com/2011/02/using-tls-with-self-signed-certificates-or-custom-root-certificates-in-ios/ –

+0

Exemple de code pour cela sur https: // github .com/dirkx/Sécurité-Pinning-by-CA –