https理论与实践

说点废话,我一直觉得APPLE是个非常激进的公司, 从早些的Flash,到现在的http,又比如新的Mac连USB口都不给。公司大到这个量级,已经可以凭一己之力促进先进技术的普及了。

本文内容分为以下三部分

  • HTTPS协议
  • 使用Let's Encrypt在后端部署https服务
  • https在iOS上的正确使用姿势

Part1 HTTPS协议

普通的HTTP请求,在通信双方建立了TCP连接之后,就可以进行了。而HTTPS则不同,在建立TCP连接之后,需要先进行SSL协议的握手过程,然后才是HTTP的通信。

SSL的握手过程如下图所示


alice想要与bob进行https的通信,需要以下几步

  1. alice给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
  2. bob确认双方使用的加密方法,并给出数字证书(包含bob的公钥)、以及一个服务器生成的随机数(Server random)。
  3. alice 确认数字证书(向CA确认)有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。
  4. bob使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。
  5. alice和bob根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

上述步骤的最终目的,是为了生成”对话密钥“,以后的通信都使用这个密钥进行对称加密(一般对称加解密的速度是比较快的)

那么看到这里,就又一个问题出现了。握手阶段的信息安全如何保障?

答案是无法保障。整个握手阶段,都是明文的。因此如果有第三方窃听了通信,他可以获得Client random、Server random以及加密后的Premaster secret。只要第三方无法破解Premaster secret的内容,那么通信就是安全的。

Part2 使用Let's Encrypt在后端部署https服务

可以参考这篇文章

How To Secure Nginx with Let's Encrypt on Ubuntu 16.04

大致步骤

  1. 安装certbot客户端
  2. 配置服务器允许方案 /.well-known文件夹
  3. sudo letsencrypt certonly -a webroot --webroot-path=/var/www/html -d example.com -d www.example.com 这个命令会生成你需要的证书等文件
  4. 配置Nginx ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

如果速度很慢多半是python的源被墙了,需要改一下pip配置。

Let's Encrypt大法好,退沃通保平安!

Part3 在iOS上使用自己颁发的HTTPS证书的正确姿势

在开发环境,也需要进行HTTPS的话,需要对AFN进行两个设置:允许不合法的证书和不验证域名

    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:[self host]]];

    manager.securityPolicy.allowInvalidCertificates = YES;
    manager.securityPolicy.validatesDomainName = NO;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,212评论 19 139
  • 一、作用 不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。 (1)窃听风险...
    XLsn0w阅读 13,706评论 2 44
  • 原文地址 http://blog.csdn.net/u012409247/article/details/4985...
    0fbf551ff6fb阅读 8,954评论 0 13
  • 本文部分内容参考果壳网对HTTPS的介绍,这里是原文链接:http://www.guokr.com/post/11...
    OliverGao阅读 9,248评论 3 29
  • 文/小麦 “我得了抑郁症…” “怎么可能?!你整天这么开心的一个人!别闹了哈。” “哇!你生活的环境这么好!真不懂...
    赖小麦阅读 4,601评论 14 15

友情链接更多精彩内容