Https动态替换证书 方案整理
一、技术问题&解决方案
技术问题1、[NSBundle mainBundle] 为只读属性,之前是直接将cer证书拖拽到工程目录下
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https" ofType:@"cer"];
解决方案:
1、经测试证书小于1kb,且替换请求不是频繁请求,采取NSUserDefault 配置文件归档存贮cer证书文件(存储格式采用rsa加密的data,并生模型model存储)
技术问题2、暴露下载https证书链接的地址,不需要用户登录,需要确认链接的安全性
解决方案:已经与后台沟通采取相应的加密措施,在传参数中添加加密参数
最终方案
-
1、首次进入打开App 延迟调用请求http 证书接口,并将证书转成模型缓存
1、model层存储内容 (1、加密的rsa data,2、未经过加密的rsa data,3、加密后的md5用做比对)
2、兼容老版本,备份原有的证书到NSUserDefault文件并转换成model
3、兼容老版本,AF 首次运行 优先加载系统的证书, 请求https证书成功后和本地的MD5加密的文件比对不同则并更新到AF库。
安全风险
1、外部暴露的下载https 证书的安全性