随着互联网的发展,网站全面 https 化已经愈来愈被重视,作为 App 开发人员,从一开始就让 API 都走 SSL 也是十分必要的。可是光这样就足够了吗?api
-----BEGIN CERTIFICATE----- MIIG4jCCBcqgAwIBAgIQDsAf+l9f2W2Jkl9C21bgSjANBgkqhkiG9w0BAQsFADBE MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMU .... -----END CERTIFICATE-----而后在命令行中使用 OpenSSL 工具链转换格式为 DER ( iOS 只能支持这个格式,注意!):
openssl x509 -outform der -in cert.pem -out cert.der将文件添加到 Xcode 工程中去。若是使用 AFNetworking,那么实现将比较简单,下面以 AFNetworking 为例:
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:@"https://api.foo.com"]; NSString *cert = [[NSBundle mainBundle] pathForResource:@"cert" ofType:@"der"]; NSData *data = [[NSFileManager defaultManager] contentsAtPath:cert]; AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[NSSet setWithObjects:data, nil]]; manager.securityPolicy = policy;
...从代码中能够看到,能够一次指定多个证书。
网易云SSL证书服务提供云上证书一站式生命周期管理,与全球顶级的数字证书受权机构(CA,Certificate Authority)和代理商合做,为你的网站与移动应用实现 HTTPS 加密部署。网络
本文来自网易云社区,经做者谭歆受权发布。运维
原文地址:iOS SSL Pinning 保护你的 API工具
更多网易研发、产品、运营经验分享请访问网易云社区。 测试