Tag: 客户端证书

Xamarin iOS客户端证书authentication

我设法成功地使用.Net HttpWebRequest类的客户端证书,但我现在正在尝试更新ModernHttpClient以支持客户端证书,因此它使用更高效的iOS库来处理请求。 我修改了DidReceiveChallenge中的DidReceiveChallenge函数来检查ClientCertificate的挑战,并试图通过https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/AuthenticationChallenges.html上的信息将其转换为Xamarin iOS。 代码编译正确,并逐步通过它导致没有错误打印出来,但最终我仍然得到一个System.Net.WebException与消息“服务器”xxx.example.com“需要客户端证书”抛出。 我的代码在下面… public override void DidReceiveChallenge(NSUrlSession session, NSUrlSessionTask task, NSUrlAuthenticationChallenge challenge, Action<NSUrlSessionAuthChallengeDisposition, NSUrlCredential> completionHandler) { …snip… if (challenge.ProtectionSpace.AuthenticationMethod == NSUrlProtectionSpace.AuthenticationMethodClientCertificate) { Console.WriteLine("Client Cert!"); var password = "xxxxx"; var options = NSDictionary.FromObjectAndKey(NSObject.FromObject(password), SecImportExport.Passphrase); var path = Path.Combine(NSBundle.MainBundle.BundlePath, "Content", "client.p12"); var certData = File.ReadAllBytes(path); NSDictionary[] importResult; X509Certificate cert = new X509Certificate(certData, password); SecStatusCode […]

将钥匙链中的.p12证书存储在稍后使用

我想在这里跟随苹果文档处理客户端p12证书: https://developer.apple.com/library/ios/documentation/Security/Conceptual/CertKeyTrustProgGuide/iPhone_Tasks/iPhone_Tasks.html#//apple_ref/doc/uid/TP40001358-CH208-SW13 我已成功从文件系统加载.p12证书: – (SecIdentityRef)getClientCertificate:(NSString *) certificatePath { SecIdentityRef identity = nil; NSData *PKCS12Data = [NSData dataWithContentsOfFile:certificatePath]; CFDataRef inPKCS12Data = (__bridge CFDataRef)PKCS12Data; CFStringRef password = CFSTR("password"); const void *keys[] = { kSecImportExportPassphrase }; const void *values[] = { password }; CFDictionaryRef options = CFDictionaryCreate(NULL, keys, values, 1, NULL, NULL); CFArrayRef items = CFArrayCreate(NULL, 0, 0, […]

Swift iOS客户端证书authentication

我想要使​​用的Web服务需要客户端证书。 我怎样才能发送我的证书呢? 为了进一步阐述我不明白如何创buildSecIdentityRef 。 在NSURLConnection didReceiveAuthenticationChallenge我在ServerTrust之后得到了这个条件: else if challenge?.protectionSpace.authenticationMethod == NSURLAuthenticationMethodClientCertificate { var secIdent : SecIdentityRef = ????????? var certCred = NSURLCredential(identity: secIdent, certificates: [getClientCertificate()], persistence: NSURLCredentialPersistence.Permanent) challenge?.sender.useCredential(certCred, forAuthenticationChallenge: challenge!) } getClientCertificate方法: func getClientCertificate() -> SecCertificateRef { let mainBundle : NSBundle = NSBundle.mainBundle() var mainBund = mainBundle.pathForResource("iosClientCert", ofType: "cer") //exported the cert in der format. […]

iOS客户端证书和移动设备pipe理

我们的客户希望使用MDM(移动设备pipe理)解决scheme(MobileIron)将客户端证书安装到企业iOS设备上,以便仅限企业设备访问某些企业Web服务。 MobileIron将客户端证书安装到设置>常规>configuration文件 (这是iOS中的证书的默认位置),并且当企业Web服务挑战一个证书时,Safari可以使用此证书进行响应。 但是我需要从一个自定义应用程序中发生相同的事情。 当我们的应用程序获得证书的挑战时,我需要能够通过设置>常规>configuration文件中的证书进行响应。 我有一个与我们的应用程序捆绑在一起的证书,以及我们的应用程序存储在其自己的钥匙串中的证书进行响应的示例,但是我没有在设置>常规>configuration文件中使用设备上安装的证书进行响应的示例。 任何人都可以向我解释更多关于什么NSURLAuthenticationChallengeSender协议方法-performDefaultHandlingForAuthenticationChallenge:做什么? 默认处理是否意味着iOS有效地代表应用程序回应挑战? 此响应是否可以包含存储在设置>常规>configuration文件中的客户端证书? 更新 如果MDM可以将客户端证书安装到应用程序钥匙链中,那将是完美的。