参考ASIHHPRequest开源项目中的ClientCertificateTests.m源码。
链接:
https://github.com/pokeb/asi-http-request/blob/master/Classes/Tests/ClientCertificateTests.m
以及:
http://developer.apple.com/library/mac/#documentation/Security/Conceptual/CertKeyTrustProgGuide/iPhone_Tasks/iPhone_Tasks.html
+ (void)testClientCertificate {
NSURL *httpsUrl = [NSURL URLWithString:@"https://xxxxxx.xx.xx"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:httpsUrl];
SecIdentityRef identity = NULL;
SecTrustRef trust = NULL;
//绑定证书,证书放在Resources文件夹中
NSData *PKCS12Data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"client" ofType:@"p12"]];
[HttpsTestViewController extractIdentity:&identity andTrust:&trust fromPKCS12Data:PKCS12Data];
request = [ASIHTTPRequest requestWithURL:httpsUrl];
[request setClientCertificateIdentity:identity];
[request setValidatesSecureCertificate:NO];
[request startSynchronous];
error = [request error];
if (!error) {
NSString *response = [request responseString];
NSLog(@"response is : %@",response);
} else {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
NSLog(@"%@",[error userInfo]);
}
}
+ (BOOL)extractIdentity:(SecIdentityRef *)outIdentity andTrust:(SecTrustRef*)outTrust fromPKCS12Data:(NSData *)inPKCS12Data {
OSStatus securityError = errSecSuccess;
CFStringRef password = CFSTR("xxxxxx"); //证书密码
const void *keys[] = { kSecImportExportPassphrase };
const void *values[] = { password };
CFDictionaryRef optionsDictionary = CFDictionaryCreate(NULL, keys,values, 1,NULL, NULL);
CFArrayRef items = CFArrayCreate(NULL, 0, 0, NULL);
//securityError = SecPKCS12Import((CFDataRef)inPKCS12Data,(CFDictionaryRef)optionsDictionary,&items);
securityError = SecPKCS12Import((CFDataRef)inPKCS12Data,optionsDictionary,&items);
if (securityError == 0) {
CFDictionaryRef myIdentityAndTrust = CFArrayGetValueAtIndex (items, 0);
const void *tempIdentity = NULL;
tempIdentity = CFDictionaryGetValue (myIdentityAndTrust, kSecImportItemIdentity);
*outIdentity = (SecIdentityRef)tempIdentity;
const void *tempTrust = NULL;
tempTrust = CFDictionaryGetValue (myIdentityAndTrust, kSecImportItemTrust);
*outTrust = (SecTrustRef)tempTrust;
} else {
NSLog(@"Failed with error code %d",(int)securityError);
return NO;
}
return YES;
}
项目中,要添加Security.framework。
分享到:
相关推荐
3. 使用新安装的国密浏览器访问 https://127.0.0.1 地址,浏览器通过GMSSL_ECC_WITH_SM4_CBC_SM3国密密码套件与TOMCAT服务器建立国密SSL规范的单向加密通道,并打开指定网页 以上步骤经过实际测试 感谢大宝CA...
安装CA证书 安装受信任的CA根证书 访问证书服务器 证书服务器配置与管理全文共33页,当前为第19页。 安装CA证书 下载CA证书页面 证书服务器配置与管理全文共33页,当前为第20页。 安装CA证书 证书下载到本地磁盘后...
在MMC 控制台上选择加载证书-计算机证书: 点击受信任的证书颁发机构,右键-导入: 边缘服务器部署全文共25页,当前为第6页。 边缘服务器部署全文共25页,当前为第6页。 点击打开: 边缘服务器部署全文共25页,当前...
信任此证书。 Dell服务器远程安装操作系统全文共4页,当前为第3页。 Dell服务器远程安装操作系统全文共4页,当前为第3页。 打开后可以看到服务器当前页面状态。 选择"虚拟介质"— "连接虚拟介质" 再次选择"虚拟介质...
最近公司项目需要,网络协议支持https,之前接触不多,所以这次想总结...2、另一种是自己制作的证书,使用此类证书的话是不受信任的,也不需要花钱,所以需要我们在代码中将此类证书设置为信任证书 二、如何忽略证书 1
对于已建立好的FTP服务器,在浏览器中访问将使用如“ftp://192.168.0.1”或是“ftp://192.168.0.1:22的格式”;除了匿名访问用户(Anonymous)外,IIS中的FTP将使用Windows 2000自带的用户库(可在“开始→程序→...
下一步,是将该文件导入到服务器的证书库,添加为一个信任证书: 通过list命令查看服务器的证书库,我们可以看到两个输入,一个是服务器证书,一个是受信任的客户端证书: keytool -list -keystore c:\tmp\tomcat....
WFetch 功能 ...• 当您正在添加根证书颁发机构, 测试 WFetch 自动将测试根证书机构为受信任根证书颁发机构, 这可防止通常对站点, 使用由是不信任证书颁发机构颁发的证书进行 SSL 连接时显示警告。
消息安全模式之UserName客户端身份验证需要服务器需要一个有效的可用于TLS 加密和向客户端验证服务身份的 X.509 证书,并且客户端必须信任此服务器证书。 这里使用http协议。建议安全上下文以后,使用共享安全上下文...
我非常喜欢Let's Encrypt开发人员,但是我无法信任他们的脚本以root用户身份在我的服务器上运行,能够编辑我的服务器配置并可以访问我的私钥。 请给我免费的ssl证书。 所以我做了一个脚本来做到这一点。 您可以sign...
使用检测过程指定多个服务器场进行控制台管理 27 针对多个产品或组件运行检测过程 28 针对单个产品或组件运行检测过程 28 1.2.10. Access Management Console 用户界面 28 使用 Access Management Console 执行任务 ...
使用 IP 访问的情况下,所有域名都可以使用该 IP。 将证书放到指定的位置。 按照文档配置完成后, Docker 客户端还需要配置私有证书认证。 参考这里:https://stackoverflow.com/questions/50768317/
受信任的证书: ·创建一个证书,并有一个值得信赖的权威,积极找出真正的最终用户,您的服务器的签署。 SFTP以上的SSH2: ·安全地传输文件,使用防火墙友好的SFTP协议。创建一个4096位的私钥和定制提供最大的...
今天我会讲述如何为你的个人网站或者博客安装SSL 证书,来保护你的访问者和网站之间通信的安全。 安全套接字层或称SSL,是一种加密网站和浏览器之间连接的标准安全技术。这确保服务器和浏览器之间传输的数据保持隐私...
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048 将密钥库放在 /WebServers 中在浏览器中访问服务器 URL 信任和添加证书例外
让我们加密需要对托管服务器进行域和外壳访问,以便运行演示对域的控制权的软件。 该软件是实现ACME协议的代理。 Certbot是推荐的ACME客户端。 我们将使用Certbot获得新证书。 让我们加密证书有效期为3个月,可以...
此密钥库包含受信任证书的列表 单向身份验证(也称为单向tls,单向ssl):Https连接,客户端在其中验证对方的证书 两路认证(也称为两路tls,两路ssl,相互认证):客户端和对方验证证书的Https连接,也称为相互...
虽然到目前为止对我的新 Firefox OS 手机非常满意,但对我来说最大的是,像所有 Mozilla 产品一样, 的根证书不包括在内,因此我无法使用 CAcert 保证的证书访问站点。 最新版本允许在浏览器中接受不受信任的站点...
证书必须由要使用该证书连接到域的 Linux VDA 信任的颁发机构颁发。 此颁发机构可以是企业认证颁发机构,或者是运行 Linux VDA 的设备信任的向公众开放的颁发机构。 证书必须长期有效。 根据经验来看,证书的有效期...
一、首先你要确认你的鉴别模式: WIN NT鉴别模式呢还是混合模式,其中混合模式包括WIN NT鉴别模式和...了一种允许或拒绝用户访问服务器的便捷方法。 为那些没有直接在Sysxlogins系统表里面登记的组授权时,我们不能使用