iOS no le da acceso muy granular a la información del certificado. Tienes dos opciones: API privadas o compila tu propio evaluador con OpenSSL.
se puede ver las funciones de certificación privados en el opensource code. La versión está disponible en SecCertificateVersion()
. No estoy seguro de lo que quiere decir con "tipo de validación" aquí.
Para hacer esto con OpenSSL, puede obtener los datos DER con SecCertificateCopyData()
y luego analizar todo usted mismo.
Sugiero abrir un radar (bugreporter.apple.com) sobre este tema. La falta de acceso a información básica sobre el certificado es un problema grave.
Si usted está buscando un código de ejemplo que extrae el certificado de la NSURLConnection
, ver el Chapter 11 sample code de iOS:PTL:
- (void)connection:(NSURLConnection *)connection
willSendRequestForAuthenticationChallenge:
(NSURLAuthenticationChallenge *)challenge
{
NSURLProtectionSpace *protSpace = challenge.protectionSpace;
SecTrustRef trust = protSpace.serverTrust;
...
SecCertificateRef cert = SecTrustGetCertificateAtIndex(trust, 0);
...
En este punto, cert
sostiene su certificado de hoja.
Gracias por su sugerencia, "tipo de validación" significa qué tipo de validación de SSL se implementa en la URL, ya sea validación estándar o extendida. Aquí he utilizado el código que figura en el "Código de ejemplo del Capítulo 11", pero cuando intento crear la aplicación obtengo errores de tiempo de compilación a -> Símbolos indefinidos para la arquitectura i386: "_SecPolicyCreateBasicX509", referenciado en: _RNSecTrustEvaluateAsX509 en ConnectionViewController.o, "_SecCertificateNotValidAfter", hace referencia a partir de: - [ConnectionViewController conexión: willSendRequestForAuthenticationChallenge:] en ConnectionViewController.o – iLearner
Es necesario vincular Security.framework. –