Actualmente abro una conexión https a un servidor web usando NSURLConnection. Todo funciona como debería y puedo recuperar el contenido de la página que estoy buscando. El certificado es emitido por VeriSign y supongo que NSURLConnection hace algún trabajo para verificar la autenticidad del certificado hasta cierto punto. Si me conecté al mismo sitio web a través de un safari móvil, extraería del certificado y mostraría la Organización (del sitio web) en la barra de navegación. ¿Es posible extraer estos mismos detalles en Cocoa Touch ya que también me gustaría presentarlos al usuario? ¿Verificaría también que el nombre de host del servidor contra ese certificado fuera lo suficientemente razonable como para asumir que el sitio web es legítimo?¿Cómo verificar un certificado de sitio web en Cocoa Touch?
Respuesta
NSURLConnection
le dará un error (NSURLErrorDomain
) si intenta conectarse a un servidor con un certificado no válido (por ejemplo, que está firmado uno mismo, fuera de fecha, tiene el host incorrecto, etc.). Por lo tanto, no es necesario que realice ninguna verificación usted mismo, ya que todo se maneja para usted.
Si realmente desea/necesita mostrar un resumen de certificado SSL en su UI, tendrá que desplegar una capa desde NSURLConnection
y utilizar en su lugar CFNetwork
API de bajo nivel. Una vez que tenga un CFReadStreamRef
que está en el estado kCFStreamEventEndEncountered
, usted debería ser capaz de hacer lo siguiente (suponiendo que su referencia de flujo se llama readStream
):
NSArray* certificates = [(NSArray*)CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates) autorelease];
if ([certificates count] > 0) {
SecCertificateRef certificate = (SecCertificateRef)[certificates objectAtIndex:0];
NSString* description = [(NSString*)SecCertificateCopySubjectSummary(certificate) autorelease];
NSData* data = [(NSData*)SecCertificateCopyData(certificate) autorelease];
}
Tendrá que decodificar la información contenida en data
si quieres para acceder a las diversas propiedades del certificado, pero el resumen que se encuentra en description
podría ser suficiente para sus propósitos.
- 1. Girar UIView en Cocoa Touch
- 2. Cocoa-Touch - Delegación confusión
- 3. Cocoa Touch - ¿Agregar un UIImageView programáticamente?
- 4. Generación de tonos en Cocoa Touch
- 5. Objective-C/Cocoa: ¿Cómo acepto un certificado de servidor incorrecto?
- 6. Delegados vs. eventos en Cocoa Touch
- 7. Plantilla "Cocoa Touch Application" de Xcode 3.1.1
- 8. Librería de código abierto Cocoa/Cocoa-Touch POP3/SMTP?
- 9. ¿Hay un buen motor de plantillas HTML en Cocoa Touch?
- 10. ¿Cómo se hace un enlace de botón a un sitio web en Cocoa?
- 11. Certificado SSL con el sitio web de Windows Azure
- 12. drawrect Vs layoutsubviews - NSView - Cocoa touch
- 13. Cocoa-Touch: performSelectorOnMainThread: comportamiento extraño + crash
- 14. ¿Qué elemento de UI en Cocoa Touch es esto?
- 15. OpenSSL verificar certificado de CA
- 16. Comprensión del patrón de diseño MVC en Cocoa Touch
- 17. Marco Cocoa-Touch para hablar con un socket TCP?
- 18. ¿Cómo saber si el dispositivo Cocoa Touch puede hacer llamadas?
- 19. Cómo ejecutar MSDeploy un paquete de sitio web creado en un sitio web de IIS virgen
- 20. Responsabilidades de los delegados y controladores en Cocoa Touch?
- 21. ¿Cómo alojar un sitio web JSP en un servidor web?
- 22. ¿Cuáles son los patrones de diseño comunes en Cocoa Touch?
- 23. Medición en un sitio web
- 24. ¿Cómo construir un sitio web en Node.js?
- 25. Java/Keystore Verificar Certificado firmado
- 26. ¿Debo ser un desarrollador certificado de Paypal para implementar Paypal en mi sitio web?
- 27. ¿Cuándo se produce la liberación automática en Cocoa Touch?
- 28. Dónde colocar la "pila de datos del núcleo" en una aplicación Cocoa/Cocoa Touch
- 29. ¿Cómo despliega un sitio web en sus servidores web?
- 30. ¿Cuál es el Cocoa Touch equivalente a NSArrayController?
Gracias por la ayuda Nathan, dejando caer una capa como usted sugirió el truco! Aunque en realidad no es un problema, ¿su NSDictionary * cast no debería ser un NSArray *? – dbotha
¿Sería capaz de publicar un código de muestra Deon? – Pripyat
@Deon ¡Lo tienes! He actualizado el código de muestra. –