iOS non fornisce un accesso molto granulare alle informazioni del certificato. Hai due scelte: API private o crea il tuo valutatore con OpenSSL.
È possibile visualizzare le funzioni di certificato private nel opensource code. La versione è disponibile da SecCertificateVersion()
. Non sono sicuro di cosa intenda per "tipo di convalida" qui.
Per fare ciò con OpenSSL, è possibile ottenere i dati DER con SecCertificateCopyData()
e quindi analizzare tutto da soli.
Suggerisco di aprire un radar (bugreporter.apple.com) su questo problema. La mancanza di accesso alle informazioni di base sul certificato è un problema serio.
Se siete alla ricerca di codice di esempio che estrae il certificato dalla NSURLConnection
, vedere la Chapter 11 sample code da iOS:PTL:
- (void)connection:(NSURLConnection *)connection
willSendRequestForAuthenticationChallenge:
(NSURLAuthenticationChallenge *)challenge
{
NSURLProtectionSpace *protSpace = challenge.protectionSpace;
SecTrustRef trust = protSpace.serverTrust;
...
SecCertificateRef cert = SecTrustGetCertificateAtIndex(trust, 0);
...
A questo punto, cert
detiene il certificato foglia.
fonte
2012-02-23 15:19:32
Grazie per il tuo suggerimento. "Tipo di convalida" indica quale tipo di convalida di SSL è implementato nell'URL, Convalida standard o estesa. Qui ho usato il codice fornito in "Capitolo 11 codice di esempio" ma quando sto provando a costruire l'app sto ricevendo errori di compilazione a -> Simboli indefiniti per l'architettura i386: "_SecPolicyCreateBasicX509", referenziato da: _RNSecTrustEvaluateAsX509 in ConnectionViewController.o, "_SecCertificateNotValidAfter", a cui si fa riferimento da: - [ConnectionViewController connection: willSendRequestForAuthenticationChallenge:] in ConnectionViewController.o – iLearner
È necessario collegare Security.framework. –