系统设计之HTTPS
系统设计之HTTPS
HTTPS
- 所有的信息都是加密传输的,第三方无法窃听
- 配备身份验证,防止身份被冒充
- 具有校验机制,一旦被篡改,通信双方会立刻发现
https使用对称加密和非对称加密结合
- 数据传输阶段使用对称加密,因为非对称加密解密速度慢
- 对称加密的秘钥采用非对称加密传输
Https 网页浏览过程:

CA
Certificate Authority
- 生成证书
- CSR - certificate signing request
- CA sign cert
CA的作用是防止中间人攻击,思想是大家选用一个共同信任的机构来校验证书 - 校验发送证书的一方是不是他所声明的身份。
中间人劫持请求,假装目标服务器返回自己的证书给client,由于CA(主流CA会安装在brower)会校验证书。
如果中间人获取目标服务器的的证书,拦截请求? 因为从public key 无法推断出private key, 无法加密客户端传来的数据(后续对称加密使用的随机数),https无法建立连接。
self-signed cert
let's encrypt
Let's Encrypt 是一个免费的CA, 它的 Root 证书 ISRG Root X1 于 7 月底获得了所有微软产品的信任,这意味着现在它的 Root 证书被所有主要 Root 程序的信任,包括微软、Google、Apple、Mozilla、Oracle 和 Blackberry。
let's encrypt 可以使用certbot 工具获取证书,并支持主流web 服务器的配置, 例如ngxin:
server { |
let's encrypt 证书有效期为90天, certbot 可以通过renewa 命令来做renew。 可以通过建立crontab定时任务来自动renew。
UseCase: 个人网站(例如blog)使用let's encrypt 来实现https 。
mutualAuth
通常client端校验server端证书(身份), 例如一些网络内部service交互可能使用mutualAuth。