还有 13 天,苹果就要关上 HTTP 大门了

2024-03-24 17:08
文章标签 http 13 苹果 就要 大门 关上

本文主要是介绍还有 13 天,苹果就要关上 HTTP 大门了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2017年1月1日以后,所有iOS需要访问网页的 App 都要面临一个问题:ATS(App Transport Security)。由于 ATS 要求 HTTPS 访问,换句话来说,还有 13 天,苹果就要对 APP 开发者们关闭 HTTP 的大门了。

Apple + ATS

1、什么是 ATS?

ATS 全称 App Transport Security,是 iOS 9 引入的一套安全机制,默认行为会强制保证所有的网络请求都使用 HTTPS。

2、绕过 ATS?

由于这样的要求影响非常广,苹果也是考虑到开发者的过渡问题,预留了一些绕过 ATS 的方法。比如,可以通过在 Info.plist 中添加 NSAppTransportSecurity 字典并且将NSAllowsArbitraryLoads 设置为 YES 来禁用 ATS。

绕过 ATS?

但是到了 WWDC 16 后,苹果对 ATS 的推进力度加大,要求从 2017 年 1 月 1 日起,所有的新提交 app 默认是不允许使用 NSAllowsArbitraryLoads 来绕过 ATS 限制的。

虽然还有其他的一些方法,但是紧随苹果的脚步,采用 HTTPS 传输显然是更好、更安全的一个选择。绕过 ATS 协议并不是一个好的方案,苹果强推 ATS 的目的,也是在于防止意外泄露个人信息,并为应用程序提供默认安全行为。

3、启用 HTTPS

在 APP 的服务器上启用 HTTPS 协议其实并没有想象的那么复杂,只需要通过一些简单的步骤部署 SSL 证书即可完成。

HTTPS,是指超文本传输安全协议(Hypertext Transfer Protocol Secure),是一种在 HTTP 协议基础上进行传输加密的安全协议,能够有效保障数据传输安全。

证书方面,可以选择免费版的 Let's Encrypt,也可以购买权威机构颁发的 CA 证书。后者是一个更加可靠、安全的选择,许多云厂商也提供有类似的 SSL 证书服务,并且可以部署到 CDN 上。

由于笔者个人使用腾讯云的服务比较多,下面以腾讯云为例介绍如何申请、部署 SSL 证书。腾讯云的 SSL 证书是由 GeoTrust 颁发的,可免费使用一年。如果你是阿里云或其他云厂商的用户,可以查看各自对应的证书产品。

3.1、申请证书

登录腾讯云之后,前往 SSL 证书管理控制台,点击申请证书,会弹出证书选择框。目前只能选择 GeoTrust 颁布的证书,后续似乎会开放更多证书厂商的产品。

申请证书1

接下来,需要填写一些申请信息,最重要的是绑定域名。假如你的域名的 abc.com,需要填写的必须是类似 a.abc.com 这样非顶级域名。

申请证书2

下一步,会要求手动进行 DNS 验证。具体的步骤可参考产品文档:域名验证指引。

一般配置正确的话,很快就可以拿到属于自己的免费证书了。据笔者个人的情况来看,大概一刷新就可以通过审核。

3.2、服务器安装证书

审核通过后,可以在SSL 证书管理控制台看到证书下载链接。先将证书下载到本地,并上传到 App的服务器,为服务器上安装证书做好准备。

这里,我们以较为常用 Nginx 为例介绍具体安装过程。如果使用的是 Apache 或 IIS 等其他服务器,请参考官方文档。

3.2.1 获取证书

Nginx文件夹内获得SSL证书文件 1_www.domain.com_bundle.crt 和私钥文件2_www.domain.com.key

  • 1_www.domain.com_bundle.crt 文件包括两段证书代码 “-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”
  • 2_www.domain.com.key 文件包括一段私钥代码“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”。

3.2.2 证书安装

将域名 www.domain.com 的证书文件 1_www.domain.com_bundle.crt 、私钥文件2_www.domain.com.key 保存到同一个目录,例如 /usr/local/nginx/conf 目录下。

更新Nginx根目录下 conf/nginx.conf 文件如下:

server {listen 443;server_name www.domain.com; #填写绑定证书的域名ssl on;ssl_certificate 1_www.domain.com_bundle.crt;ssl_certificate_key 2_www.domain.com.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置ssl_prefer_server_ciphers on;location / {root   html; #站点目录index  index.html index.htm;}}

配置完成后,先用 bin/nginx –t 来测试下配置是否有误。正确无误的话,重启 nginx,就可以使https://www.domain.com 来访问了。

4. CDN 上部署 HTTPS

很多网站都会使用 CDN 服务,因为云厂商一般有提供一些免费的 CDN 流量额度,比如腾讯云就有 60GB 的免费流量。

对于使用了 CDN 的 App 或网站,还可以将 HTTPS 部署在全网 CDN 节点,实现全网数据加密传输功能。

4.1 配置 HTTPS 的条件:

  • 域名管理页面,域名的状态为 部署中 或 已启动
  • 域名不是由 COS 同步而来的 .file.myqcloud.com 后缀域名。
  • 域名的接入方式为 自有源 或者 COS源、FTP源。

登录CDN控制台,进入 【域名管理】 页面,点击域名右侧 管理 按钮,进入管理页面:

在 【高级配置】中找到 HTTPS 配置模块

4.2 证书类型

腾讯云 CDN 目前支持两种方式部署证书:

  • 自有证书:将自有证书、私钥内容上传至 CDN 进行部署,全程加密传输,证书不落地,保障您的证书安全。
  • 腾讯云托管证书:也就是上面咱们已经申请成功的 SSL 证书。

4.3 证书配置

前往CDN高级工具-证书管理界面,

根据情况选择希望配置证书的域名、证书类型和回源方式即可。这里需要满足前面提到的这个条件:域名的状态为 部署中 或 已启动

勾选“腾讯托管证书”后,可以在证书列表下拉菜单中找到刚才申请到的证书。回源方式选择为 HTTPS,之后提交即可。

证书配置成功后,会出现 强制跳转 开关,开启后,即使用户发起 HTTP 请求,也会强制跳转为 HTTPS进行访问。

检测部署效果

完成上面一系列的操作之后,还需要最后确认部署的 SSL 证书是否符合 ATS 要求。否则,折腾了那么久,最终却是做了无用功的话,那是非常痛苦的一件事。

对此,云厂商也是提供了较为方便的检测方式,只需要输入目标域名即可一键检测。

ATS 检测结果

至此,就完成了 App 服务器的 SSL 证书部署,并满足了苹果 ATS 协议的严格要求。

这篇关于还有 13 天,苹果就要关上 HTTP 大门了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/842226

相关文章

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python WSGI HTTP服务器Gunicorn使用详解

《PythonWSGIHTTP服务器Gunicorn使用详解》Gunicorn是Python的WSGI服务器,用于部署Flask/Django应用,性能高且稳定,支持多Worker类型与配置,可处... 目录一、什么是 Gunicorn?二、为什么需要Gunicorn?三、安装Gunicorn四、基本使用启

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示