在iOS中创建及使用自签名SSL证书应该注意什么

在iOS中创建及使用自签名SSL证书应该注意什么,第1张

签名SSL证书创建快速且不用支付任何费用,无需购买证书授权,无需遵守任何审计要求。

不过,使用自签名证书,浏览器并不会自动信任使用它们的网站。因此在移动Safari浏览器上使用HttpWatch app时,你常常会看到类似下面的警告

使用自签名证书时浏览器发出的警告

使用HttpWatch iOS app 则提示更多警告信息:

使用自签名证书时浏览器发出的警告

那么,如何设置iOS才能避免接收此类警告呢?使用自签名证书应该注意些什么呢?我们先来看两点:

一、不要在移动Safari中接受自签名证书

当你在Safari中首次尝试使用自签名证书时你可能自然而然就选择了Continue或者Details->Accept。

不要在移动Safari中接受自签名证书

虽说这样也可以在Safari中打开站点,不过值得注意的是:

1. 在Safari中选择Continue或者Details->Accept接受此证书后,只是添加了一个SSL连接异常,可阻止Safari继续向你警告相关站点。但它不会安装该证书作为iOS上的可信任证书。该设备上的其他应用程序(如Chrome、HttpWatch等)仍然无法连接到该网站。

2. 一旦添加了SSL异常,在iOS7系统中再想移除它是很困难的。在以前的版本中,通过Settings->Safari and selecting ‘Clear Cookies and Data’ 可以将其移除。但在iOS7中似乎不太容易实现。

二、安装自签名证书作为iOS的配置参数文件

你可以简单地通过将该文件发送给自己作为附件的方式在iOS中添加SSL证书到受信任列表中:

安装自签名证书作为iOS的配置参数文件

然后选择Install添加证书。这样一来,当你在Safari中使用证书时就不会再收到相关警告,其他iOS应用程序在该设备中使用也不会再收到类似警告。

与上面按Safari SSL异常处理不同的是,用这种方法安装你可以通过Settings->General->Profiles随时访问证书,需要的时候也可以删除它:

删除证书

Apple为Mac和PC提供了安装证书的iPhone配置实用工具。当电子邮件不可用或需要管理的iOS设备数量较多时,这是一个好方法。

iOS7以下版本的国际化方法创建一个Localizable.strings文件 code中用字符串的地方使用NSLocalizedString,这与系统语言相关 时间显示,数字,金融与地区相关,所以需要各类NSFormater, 如NSDateFormatter, NSNumberFormatter … 用命令将所有NSLocalizedString返回的字符串格式化到Localizable.strings里。命令行进入工程目录(我的工程名是LocalizationTest),运行下面命令:find ./ -name "*.m" -print0 xargs -0 genstrings -o LocalizationTest/en.lproj其中LocalizationTest/en.lproj根据自己的目录修改签SSL证书问题,你可要到沃通CA申请一张免费SSL证书来使用。

如果iOS APP用了服务器,需要防止数据嗅探,防止中间人利用伪造证书窃取流量,保护数据安全,这就需要为APP设置HTTPS加密连接。APP设置HTTPS加密连接,需要先向权威CA机构(如沃通WoSign)申请Web服务器的SSL证书,通过网络开源库AFNetworking 的安全相关设定配置HTTPS请求,获取服务器部署的SSL证书。按照下列方法设置AFNetworking。

设置AFN请求管理者的时候 添加 https ssl 验证。

// 1.获得请求管理者

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]

// 2.加上这个函数,https ssl 验证。

[manager setSecurityPolicy:[self customSecurityPolicy]]

// https ssl 验证函数  

- (AFSecurityPolicy *)customSecurityPolicy {

// 先导入证书

NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@"cer"]//证书的路径

NSData *cerData = [NSData dataWithContentsOfFile:cerPath]

// AFSSLPinningModeCertificate 使用证书验证模式

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]

// allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO

   //validatesDomainName 是否需要验证域名,默认为YES 


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7932070.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存