【发布时间】:2015-05-26 21:10:33
【问题描述】:
如何在设备上安装根证书颁发机构?
只有我的应用需要证书,如果可能的话可以安装在它的沙箱中。
当我drag the certificate onto the simulator and install it 时有效,但不使用以下代码:
let rootCertPath = NSBundle.mainBundle().pathForResource("server", ofType: "der")!
let rootCertData = NSData(contentsOfFile: rootCertPath)!
let rootCert = SecCertificateCreateWithData(kCFAllocatorDefault, rootCertData).takeRetainedValue()
let error = SecItemAdd(
[
NSString(format: kSecClass): NSString(format: kSecClassCertificate),
NSString(format: kSecValueRef): rootCert
], nil)
SecItemAdd 没有错误返回,并且似乎已正确安装在设备上,但仍然无法连接到服务器并出现错误:
NSURLConnection/CFURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9813)
连接服务器的代码:
let request = NSURLRequest(URL: NSURL(string: "https://" + server + ":" + port)!)
let session = NSURLSession(configuration: .defaultSessionConfiguration())
session.dataTaskWithRequest(request, completionHandler:
{(data, response, error) in
println(error)
}).resume()
error 打印以下内容:
Error Domain=NSURLErrorDomain Code=-1202 "此服务器的证书无效。
但同样,如果我在模拟器的配置文件中手动安装相同的证书,它就可以正常连接。
【问题讨论】:
标签: ios swift certificate