作者 | 阿文

责编 | 郭芮

HTTPS 并不是一个新鲜玩意......2017年1月1日起,苹果公司强制使用HTTPS 协议传输,其开发者必须使用 HTTPS 进行数据传输;2017年2月份,谷歌为了推进 HTTPS 的在网络上的应用,表示 Chrome 浏览器会将用户访问的 HTTP 页面标记为“不安全”——近几年,互联网巨头们都在极力地推广 HTTPS,目的就是为了保证数据安全。

现在,微信小程序也要求必须使用 HTTPS 协议,新一代的 HTTP/2 协议的支持也需以 HTTPS 为基础。

为什么巨头都放弃了 HTTP?

这要从 HTTP 这个协议本身说起。HTTP 是一个明文传输的协议,其协议设计时并没有提供数据加密的机制,因此在数据传输过程中,你的数据就相当于是在“裸奔“,这样带来的问题就是很容易被不法分子劫持。

HTTP 最容易被运营商劫持。当我们访问一个 HTTP 网站,其数据要经过运营商的网络进行数据传输,在传输过程中,运营商可以对 HTTP 协议进行劫持,修改 html 代码,在其中插入 JS 或 DOM 牟利。

除了运营商劫持之外, 通过 HTTP 协议进行数据传输还容易被攻击者监听和中间人攻击,从而获取网站帐户和敏感信息等。

HTTPS 的优势

因为 HTTP 协议不安全,因此有了 HTTPS,多了个 S,就多了一份安全。

HTTPS 是利用 SSL/TLS 来对 HTTP 数据包进行加密传输,这样一来,数据在传输过程中就不再是“裸奔”了。

HTTPS 提供了:

  • 内容加密建立一个信息安全通道,来保证数据传输的安全;

  • 身份认证确认网站的真实性;

  • 数据完整性防止内容被第三方冒充或者篡改。

HTTPS 的信任继承基于预先安装在浏览器中的证书颁发机构,简称 CA。浏览器默认都会内置一些 CA 机构的根证书,只有可信任的 CA 机构颁发的证书,浏览器才会信任。

Let's Encrypt

Let's Encrypt 是一个是非营利性的互联网安全研究组(ISRG),它提供了一个免费、自动化和开放的证书颁发机构。目前 Let's Encrypt 已为 1.5亿个网站提供 SSL 证书。

Let's Encrypt 的优势:

  • 免费:拥有域名的任何人都可以零成本获得可信证书;

  • 自动:在Web服务器上运行的软件可以与其交互,以便轻松获取证书,安全地配置它以供使用,并自动进行续订;

  • 安全:无论是在CA方面还是通过帮助网站运营商正确保护其服务器;

  • 透明:所有颁发或撤销的证书将被公开记录,供任何人查阅;

  • 开放:自动发布和续订协议将作为其他人可以采用的开放标准发布;

  • 合作:就像基础互联网协议本身一样,是一项让社区受益的共同努力。

通过 Let's Encrypt 签发一个证书,目前其证书的生命周期为 90天,当证书快过期时,会自动向 Let's Encrypt 服务器发送续签申请,再续签一个周期。这一优势是其他按年签发免费证书无法提供的。

Let's Encrypt 之所以能够实现自动签发证书,实际上是依赖其提供的证书自动续签协议 ACME,目前IETF已将ACME协议标准化为RFC 8555。此外Let's Encrypt 还提供通配符证书,并且还是免费提供的,这也是在 CA 中少有的。

通过 ACME 协议,我们可以实现全自动化的管理证书,对于证书的操作,我们只需要做一次,后续的升级续签完全无需人工干预。

我们可以通过 acme.sh 这个开源项目来进行证书的签发和自动升级。acme.sh 是一个纯 SHELL 实现 ACME 协议的脚本。

使用 acme.sh 签发一个证书

首先,我们需要安装脚本:

curl https://get.acme.sh | sh

acme.sh 提供了多种方式来进行证书的签发,例如 DNS 模式、独立模式、Apache 模式、Nginx模式等等。

以 DNS 模式为例,我们签发一个证书:

acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com

如果需要签发一个通配符证书,我们可以这样:

acme.sh --issue --dns -d example.com -d *.example.com 

脚本会发送请求到 CA 机构,CA 机构会要求你对域名进行认证,即需要你添加 TXT 记录来认证域名所有权。认证通过后,执行如下命令签发即可:

acme.sh --renew -d example.com

此外,该脚本最大的优势是支持自动API 集成,上述案例通过 DNS 方式签发证书需要手工干预,你需要到域名解析商添加TXT 记录,这对于做自动持续集成来说很不方便。因此acme.sh 提供了多家域名厂商的 API 集成,经过简单的配置即可完全自动化进行域名申请和域名解析的添加以及续签。

具体的使用方法可以参考说明文档(https://github.com/Neilpang/acme.sh/tree/master/dnsapi)。

以 Googaddy 为例,我们获取 AK 和 SK后执行:

export GD_Key=""export GD_Secret=""

然后签发证书:

脚本会在120秒内调用域名解析商的接口自动添加域名解析然后完成认证。

签发完的证书会保存在 ~/.acme.sh/ 目录下,它包含以下几个文件:

通常建议加载证书选择公钥文件为fullchain.cer 的公钥文件,这样避免一些浏览器无法识别根证书或中间证书从而导致浏览器报错,例如提示证书不受信任。

接下来,在你的 Web 服务器进行证书的配置即可:

  listen 443 http2 ssl;  server_name www.awen.me awen.me;  index index.html index.htm;  ssl_certificate /usr/local/nginx/ssl/awen.me.rsa.cer;  ssl_certificate_key /usr/local/nginx/ssl/awen.me.rsa.key;  ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES; ssl_prefer_server_ciphers  on;

 热 文 推 荐 

☞ 西安到底需不需要互联网?

☞ Google 要进军游戏行业了?!

☞ 华为京东联手,火拼小米生态链!

☞ 315 后,等待失业的程序员

☞ 套路贷+套路培训,IT 培训机构造假术大公开 | 程序员有话说

那位13岁就当上老板的开发者是如何炼成的?

☞ 好莱坞大片! 为躲避死亡威胁, 只用15步, 这个密码朋克大叔就从世界"消失"了...

确认!贾扬清加盟阿里,任技术副总裁

都道业务提升坑大事儿多,但英特尔云方案却说“简单”

☞ Python 爬取蔡徐坤的 10 万转发数据,竟是假流量?

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

喜欢就点击“在看”吧!

程序员如何在 HTTPS 中高效配置通配符证书?| 技术头条相关推荐

  1. 程序员如何 Get 分布式锁的正确姿势?| 技术头条

    作者 | 刘春龙 责编 | 郭芮 在很多互联网产品应用中,有些场景需要加锁处理,比如秒杀.全局递增ID.楼层生成等等,大部分的解决方案是基于DB实现的,Redis也是较为常见的方案之一. Redis为 ...

  2. 程序员如何借助 AI 开挂股票神预测?| 技术头条

    作者 | Boris B 译者 | Major 编辑 | Jane 出品 | AI科技大本营(id:rgznai100) [导语]用深度学习预测股票价格不是一个新话题,随着技术的不断发展,大家一直在不 ...

  3. 阿里程序员常用的 15 个高效工具,大部分已开源!

    阿里程序员常用的 15 个高效工具,大部分已开源! 阿里将自身在各类业务场景下的技术积淀,通过开源.云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率. ...

  4. 程序员跳槽时,如何高效地准备面试

    在 Chat 中将结合 100offer 平台上的实际案例,和大家分析「如何做好开场白.如何让 HR 来发现你的闪光点.如何向面试官提问」等面试中最关键的核心要素.同时,我们也整理出一线大厂的技术 L ...

  5. Java数据结构与算法(九)-程序员常用的10中算法

    本章目录 第14章 程序员常用的10中算法 14.1 二分查找算法(非递归) 14.1.1 二分查找算法(非递归)介绍 14.2 分治算法 14.2.1 分治算法介绍 14.2.2 分治算法最佳实践- ...

  6. 丁威: 优秀程序员必备技能之如何高效阅读源码(二更)

    @[toc](丁威: 优秀程序员必备技能之如何高效阅读源码(二更)) 消息中间件 我能熟练使用这个框架/软件/技术就行了, 为什么要看源码?" "平时不用看源码, 看源码太费时间, ...

  7. 某面试官吐槽:面试某大龄程序员,问HTTPS的加密过程,对方却答不出来!网友:这个问题毫无意义!...

    大龄程序员面试时会遭遇什么窘境? 一个面试官发帖吐槽:刚才面了一个毕业15年的开发,自己并没有要坑大龄程序员的意思,只是问了一个https的加密过程,结果那个大龄程序员支支吾吾没答出关键,真怕自己以后 ...

  8. 程序员如何快速准备面试中的算法 - 结构之法

    准备面试.学习算法,特别推荐最新出版的我的新书<编程之法:面试和算法心得>,已经上架京东等各大网店 前言 我决定写篇短文,即为此文.之所以要写这篇文章,缘于微博上常有朋友询问,要毕业找工作 ...

  9. 程序员的私藏好书中,一定有这7本!

    众所周知,读一流的书,是人生最大的捷径.今天推荐异步社区的 7 本经典程序员必读书籍!并送出 7 本,赠送方式见文末! 无论是从书中得到提升专业技能的知识,还是增长见识.启迪智慧,这些都只有好书才能做 ...

最新文章

  1. MySQL优化之my.conf配置详解
  2. java中public private_java中public、private、protected区别
  3. java多线程实例_多线程&高并发(全网最新:面试题+导图+笔记)面试手稳心不慌...
  4. Python 模板语言
  5. [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门
  6. java long 唯一_Java工具类:获取long型唯一ID
  7. 组队APP功能点定点NABCD分析
  8. android 实现应用程序后台运行的说明
  9. c语言课后题答案83,C语言练习试题和答案
  10. 评价——秩和比综合评价
  11. 微软商店下载显示错误,win11无法下载更新的解决方法
  12. 单片机基础知识大总结
  13. GMap.NET 使用教程【1】
  14. 从苏炳添的学术论文中,看看如何写论文
  15. SVG进阶-sprite 雪碧图
  16. 收藏一些非常不错的学习资源
  17. 用鼠标模拟视线跟踪技术
  18. 这三个文件在 C:\Program Files (x86)\Microsoft Office\root\Office16 下怎么会是符号链接?
  19. 表中数据的更改量保存视图
  20. OPC 、OPC DA、OPC UA介绍

热门文章

  1. java 中的流_深入理解Java中的流(Stream)
  2. 在VMware中的Ubuntu虚拟机安装open-vm-tools调整屏幕可以复制粘贴
  3. PIL保存二维numpy数组(2,2)为灰度图和RGB图
  4. ideal如何快速导入import_Vue性能优化:如何实现延迟加载和代码拆分?
  5. windows 代理软件_MacOS好用软件推荐(一)
  6. 手机虚拟摄像头_新游 | 打破次元壁障,《猪猪侠AR虚拟使命》现实约战,一切尽在创酷互动!...
  7. 新型冠状病毒数据抓取及整理详细流程
  8. 中国送餐行业市场供需与战略研究报告
  9. 用c语言实现相机坐标的过滤,华为2014年机试题【字符串过滤】-【C语言/C++】
  10. SimpleDateFormat 线程不安全原因及解决办法