HTTPS 证书的应用那么是谁在做 HTTPS 加密呢?服务端通常是 Nginx、Apache 这些反向代理服务器做的,而具体的业务服务器不需要处理,客户端通常是浏览器等做的加解密,Chrome 是使用 boringSSL 这个库,fork 自 openssl 。
我们通过 let’s encrypt 可以申请免费的 TLS 证书,每 3 个月需要手动续 。
证书分为 3 种:DV、OV、EV,DV 适用于个人,OV 和 EV 需要身份审核,EV 最高端 。
EV 证书会在浏览器的地址栏显示证书的企业名称:

文章插图
但是新版的 Chrome 似乎把这个去掉了,所以我们打开 medium 的控制台可以看到一个提示:
As part of an experiment, Chrome temporarily shows only the lock icon in the address bar. Your SSL certificate with Extended Validation is still valid.
另外我们可以用 openssl 生成一个自签名证书,执行以下命令:
openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:2048 -keyout test.com.key -out test.com.crt便会得到两个文件,test.com.crt 是证书,test.com.key 是证书的私钥,如下图所示:
文章插图
然后把这两个文件给 Nginx 使用便能使用 HTTPS 访问,如下代码所示:
server { listen 443; server_name test.com; ssl on; ssl_certificate test.com.crt; ssl_certificate_key test.com.key; }可以把这个证书添加到系统证书里面,这样浏览器等便能信任,或者直接使用 mkcert 工具一步到位 。客户端证书还有一种证书叫客户端证书,同样需要向 CA 机构申请一个客户端证书,和服务端 TLS 证书不一样的地方是,服务端证书通常是和域名绑定的,而客户端证书可以给本地的任意可执行文件进行签名 。
签名验证算法和上文讨论的 TLS 证书一致 。为什么可执行文件需要签名呢,因为如果不签名的话,系统会拦截安装或者运行,如 Mac 双击一个未签名的 dmg 包的提示:

文章插图
直接不让你运行了,而 windows 也有类似的提示,Windows 是会给一个警告:

文章插图
而当我们运行一个已签名的 exe 文件将会是正常的提示,如 Chrome 的提示:

文章插图
综上本文主要讨论了对称加密和非对称加密的原理,并介绍了如何利用 RSA 对证书签名的检验以验证连接服务器的身份,怎么利用 ECC 进行数据加密和密钥交换,介绍了下怎么生成和使用 HTTPS 证书,并介绍了下客户端证书 。
相信看完本篇,会对 HTTPS 的加解密有一个较为全面的了解 。
作者:李银城
链接:
https://zhuanlan.zhihu.com/p/75461564
【教你全面图解 https 加解密原理】
推荐阅读
- 图解机器学习:人人都能懂的算法原理
- 冬季身体“偶遇”小麻烦 中医教你改善
- 女人气血不足老得快 4招教你改善
- 麦肯锡4大方法论,多维度提升你的全面能力
- 铁皮石斛花泡茶禁忌,教你九个喝茶的技巧
- 初春多晒太阳好处多 看专家教你晒太阳的诀窍
- lol词汇adc的全面介绍 adc是什么意思
- 教你用Python实现截图和文字识别,就是这么简单
- 人体足部反射区高清图解
- 教你这三个穴位按摩 涌泉穴的准确位置图
