App采用Https的解决方案


       在各大领域对Https的大力推进,苹果公司对app上架审核要求采用Https的规定的契机下,App需启用Https安全链接模式。

       我方提供了两个主流解决方案。分别是自签名SSL证书和第三方信任机构颁发SSL证书。

 

方案一:自签名SSL证书

       自签名SSL证书方案操作相对很复杂,需要配置服务端源码和大幅度修改app端源码。同时在PC网站端会有红色的非认证机构颁发证书的警告。因此该方案我们不推荐。具体处理方式见附件。

 

方案二:第三方信任机构颁发SSL证书。

      SSL证书根据验证级别,分为三种类型,即域名型SSL证书,简称DVSSL;企业型SSL证书,简称OVSSL;增强型SSL证书,简称EVSSL。详细区别见附件 SSL证书类型简介.doc

       对于小型企业我们建议申请免费的DVSSL证书,中大型企业申请付费版本的OVSSL或者EVSSL,酌情而定。

 

一、准备工作:

       免费的DVSSL证书有国内很多平台,推荐腾讯云中的合作的“亚洲诚信”免费DVSSL证书。付费的SSL也可以在腾讯云中申请。具体申请流程见腾讯云中提供的教程。

       腾讯云申请地址 https://www.qcloud.com/product/ssl

       亚洲诚信 https://www.trustasia.com/

 

二、后台工作:

TS4.3以及之前的版本:

修改core/core.php tsdefine('IS_HTTPS', 0); 改为 tsdefine('IS_HTTPS', 1);

TS4.5 版本:

修改src/vender/zhiyicx/src/core.php  tsdefine('IS_HTTPS', 0); 改为 tsdefine('IS_HTTPS',1);

 

在nginx 配置中的对应的server段加入如下代码即可

 

listen      80 default backlog=2048;

listen      443 ssl;

ssl_crttificate xxx/xxx.crt;//证书相对路径

ssl_crttificate_key xxx/xxx.key;//证书相对路径

 

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers"ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";//推荐的向后兼容的密码套件

ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:10m;

 

三、app端工作:

 

A、iOS端

1、关闭-Info.plist文件内, AppTransport Security Settings 子键中Allow Arbitrary Loads 设置为  YES  ,开启ATS校验。同时添加 AllowArbitrary Loads in Web Content 子键并设置为NO,允许H5访问Http站点。

 在app提交审核中追加以下文案:

由于该app中有通过H5访问部分外部站点的应用场景,不能确保外部站点使用了Https,因此申请允许H5访问Http的站点权限。


注意:

由于web开通Http访问权限是在iOS10才新增的,所以该设置会导致iOS10以下版本的手机无法在H5中访问http链接的内容。建议运营团队控制H5中的链接指向,尽量避免链接到Http网页。待官方推出完美的解决方案。

 

2、修改服务器域名为Https即可

以及之前的版本:

修改 Api.h文件中

 #define HEADURL @"http://demo.thinksns.com/ts4/"

#define HEADURL @"https://demo.thinksns.com/ts4/"

 

TS4.5 版本:

修改TSNetworkingRequestPath.h 中

static NSString const@"http://demo.thinksns.com/ts4/";

static NSString const@"http://demo.thinksns.com/ts4/";

 

3、第三方Https的支持

3.1 不用处理的第三方:极光推送、bugHD、友盟、shareSDK、

3.2 需要升级的第三方:高德地图

官网链接:http://lbs.amap.com/api/ios-sdk/guide/create-project/https-guide/

     'AMap2DMap', '~> 4.5.0' // 及其以上

     'AMapSearch', '~> 4.4.1' // 及其以上

【备注】

1.可以直接通过CocoaPods升级版本。

或者官网下载对应文件(2D地图搜索功能)后替换/PodsAMap2DMapMAMapKit.framework

以及/PodsAMapSearchAMapSearchKit.framework

2.添加代码

AppDelegate.m

#pragma mark --- 初始化 三方平台

-(void)init3Part{

    [OpenShareconnectAlipay];

    [OpenShareconnectWeixinWithAppId:WeiXinSDK_AppId];

// 开启高德地图Https兼容

    [[AMapServicessharedServices] setEnableHTTPS:YES];

    [AMapServicessharedServices].apiKey = AMAP_KEY;

}


B、安卓端

 

1、修改\thinksns-system-android\ThinkSnsBase\src\main\java\com\thinksns\sociax\thinksnsbase\network\ApiHttpClient.java中的newHttpClient()方法中 API-URL= “http://” + HOST +”/”+API 的http:// 更改为‘https://’。

2、替换\thinksns-system-android\Thinksns_v4.0\src\com\thinksns\sociax\api\Api.java中所有的 http为https。

3、替换\thinksns-system-android\Thinksns_v4.0\src\com\thinksns\sociax\t4\android\function\FunctionThirdPlatForm.java中的http为https。

 

注:2017 年1月6日以后的版本只用更改\thinksns-system-android\ThinkSnsBase\src\main\res\values\app_init_set.xml中的名叫protocol的arrayitem。如图:



 

 

你可能感兴趣的:(App采用Https的解决方案)