参考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。
分享到:
相关推荐
本篇文章将深入探讨如何在Java中实现读取不同格式(如cer、der、crt)的证书,以及如何使用这些证书访问HTTPS接口并获取返回数据。 首先,我们需要了解证书的基本概念。证书通常包含了公钥和一些身份信息,由受信任...
当用户访问一个使用HTTPS的网站时,服务器会提供这个证书,证明其身份。证书包含网站的公钥,用于建立加密连接。自签署的服务器证书同样适用于内部网络或测试环境,但在生产环境中,为了保证用户信任,通常应使用由...
1. 使用`InstallCert.java`获取或安装服务器的证书到本地信任存储。 2. 创建一个`KeyManagerFactory`,加载客户端的私钥和证书。 3. 创建一个`TrustManagerFactory`,通常可以设置为`TrustAllManager`,以接受任何...
解决 Linux 下访问 HTTPS 站点问题:证书无效 在 Linux 系统中访问 HTTPS 站点时,...解决 Linux 下访问 HTTPS 站点问题:证书无效的问题需要了解 CA 证书的概念和 OpenSSL 工具的使用,以及 Linux 系统的证书库结构。
### IIS6.0 服务器证书安装使用指南 #### 一、引言 随着互联网技术的发展,网络安全成为了不可忽视的问题。为了确保数据传输的安全性,使用SSL/TLS证书对网站进行加密变得至关重要。本指南旨在详细介绍如何在IIS...
根据提供的文件信息,我们可以深入探讨如何使用`...通过以上步骤,我们可以使用`httpclient`库安全地进行HTTPS访问,并且可以根据具体需求定制信任管理和异常处理机制。这对于构建安全可靠的网络应用程序至关重要。
当我们访问HTTPS网站时,浏览器会检查服务器的证书,确保其是由可信的CA签发,并且没有过期或被撤销。在某些情况下,我们可能需要自定义证书验证逻辑,例如在使用`curl`时。 在给定的`curl 校验服务器证书代码`场景...
但如果服务器使用的是自签名证书或者私有CA签发的证书,需要在代码中添加对这些证书的信任。这通常通过创建一个自定义的`TrustManager`实现,比如`X509TrustManager`,并覆盖其`checkServerTrusted`方法来实现。 2....
当用户访问一个使用SSL的网站时,浏览器会与服务器进行握手过程,这个过程中就会用到SSL证书。证书包含了服务器的公钥,公钥用于加密用户发送给服务器的数据。此外,证书还包含服务器的标识,如域名,以及由CA签名的...
本文将深入探讨如何利用openssl工具、libcurl库以及curl命令行工具来访问HTTPS服务器并进行验证,同时获取服务器的证书。 首先,openssl是一个强大的安全套接层(SSL)和传输层安全(TLS)协议工具包,它包含各种...
首先,你需要将服务器的证书导入到一个信任库文件(如JKS或PKCS12格式),然后创建一个`SSLContext`对象,并设置自定义的`TrustManager`。这通常涉及以下步骤: - 导入证书:使用`keytool`命令行工具将服务器证书...
Grafana配置Https使用的证书 操作: 第一步:自己制作一个证书使用openssl制作然后填写一些信息,证书就制作成功 第二步:使用我制作好的证书,压缩包里有修改Grafana的grafana.ini,修改配置如下:改protocol 为 ...
### 使用Ngrok与自定义SSL证书实现HTTPS访问 #### 一、引言 随着网络安全意识的提高,越来越多的应用和服务开始采用HTTPS协议来保障数据传输的安全性。对于开发测试环境而言,有时我们需要通过HTTPS协议访问本地...
然而,在某些情况下,我们可能需要在开发环境中跳过HTTPS的证书验证,以允许与不受信任的服务器进行通信。以下是如何在Java中实现这一功能的详细步骤和相关知识点: 首先,了解HTTPS的工作原理是至关重要的。HTTPS...
Java客户端访问HTTPS服务器涉及到的是网络安全通信中的...总之,Java客户端访问HTTPS服务器涉及了SSL/TLS协议的使用、证书和密钥的管理、以及相应的Java代码配置。理解这些概念和技术对于构建安全的网络服务至关重要。
Copy 到编码内,然后证书模版选择 web 服务器,单击提交(注:一定要使用管理员 administrator 登录)。 二、客户端申请证书及下载安装证书 在 Windows 7 上访问网站,要求证书,单击继续浏览。被拒绝。查看证书,...
2. **证书验证**:客户端检查服务器证书的有效性,包括证书是否由可信任的证书颁发机构(CA)签发,证书是否已过期,域名是否匹配等。 3. **密钥交换**:客户端生成一个随机的会话密钥,使用服务器公钥加密,然后...
3. **颁发和使用证书**:管理员在CA服务器上手动颁发证书。用户在客户端可以使用申请到的证书,例如在Outlook中设置邮件账户的安全选项,选择证书进行加密和签名。 **图解过程** 在实际操作中,可能会建立一个独立...