美文网首页
https理论与实践

https理论与实践

作者: MMoooooon | 来源:发表于2016-12-17 10:36 被阅读0次

说点废话,我一直觉得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;

相关文章

  • https理论与实践

    说点废话,我一直觉得APPLE是个非常激进的公司, 从早些的Flash,到现在的http,又比如新的Mac连USB...

  • 2018-11-03 斯坦福大学的教育理念及其启示

    理论来源于实践,理论也指导实践,例如不能只是了解开公司的流程,必须实际开一家公司,将理论与实践真正结合 https...

  • 收藏网址

    scrum理论与实践的轻量级指南[https://scrumprimer.org/primers/zh-cn_sc...

  • 理论、知识与信息

    一、从理论与实践说起 何为理论?何为实践?我们经常将理论与实践作为一对概念范畴来言说,进而不是实践的就是理论的,似...

  • 2019-04-13

    机器学习实践与理论 学习方法讨论 找论文: https://arxiv.org/ 构造喵咪...

  • 2019-03-28

    实践大于理论,想要取得收获必须理论与实践相结合。

  • Chapter 8

    书上的理论是实践的总结和升华,理论源于实践但高于实践。理论与实践相互印证,理论需要不断地在实践中加以完善。...

  • Gradle理论与实践一:Gradle入门

    Gradle系列相关文章:1、Gradle理论与实践一:Gradle入门2、Gradle理论与实践二:Groovy...

  • Gradle理论与实践二:Groovy介绍

    Gradle系列相关文章:1、Gradle理论与实践一:Gradle入门2、Gradle理论与实践二:Groovy...

  • Gradle理论与实践四:自定义Gradle插件

    Gradle系列相关文章:1、Gradle理论与实践一:Gradle入门2、Gradle理论与实践二:Groovy...

网友评论

      本文标题:https理论与实践

      本文链接:https://www.haomeiwen.com/subject/xzpomttx.html