cerbot笔记参考简书的 杭州七木科技文章.
对称加密与非对称加密
- 对称加密,只存在一个秘钥,一个明文用秘钥进行异或操作以后,得到一个密文,密文用秘钥又异或操作后,就可以得到明文。
- 非对称加密,会存在公钥(公开的)和私钥,在用公钥加密后的密文,只有用私钥才能解密,私钥加密后的密文,只有公钥才能解密。可以加密文件,和身份验证(用私钥加密)。
PKI公钥基础设施
- 负责公信,发证书的CA机构
证书订阅人在登记机构进行身份登记(证书签名申请request certificate issuance, CSR),登记机构再通过CSR发消息给CA,CA中心通过后,会生成公钥和私钥,公钥在CA证书保存,给回用户。订阅人拿到回部署到nginx中(web服务器),浏览器访问站点,会请求服务器证书,服务器会把CERT的公钥证书发回给浏览器,浏览器要去验证证书是否有效的,就会去CRL服务器查询,CRL是CA把过期证书放入的服务器,但是链条形式的,性能很差。所以就出现OCSP响应程序,能以一个证书去查询是否过期,OCSP性能不高,nginx有OCSP开关,可以主动去OCSP查询证书是否有效。客户端直接就能得到证书是否有效。
证书类型
- 域名验证(domain validated,DV)证书
只会验证域名是否正确,大部分免费 - 组织验证(organization validated,OV)证书
验证填写的机构和机构是否正确,价格远高于DV - 扩展验证(extended validated,EV)证书
比OV做更严格的验证,大部分浏览器友好地在网址栏显示填写的公司名称
所有站点的主证书会以三级证书的形式,(DigiCert Global Root CA)根证书,(Encryption Everywhere DV TLS CA - G1)二级证书,(www.taohui.pub)主证书,根证书的验证严格验证,操作系统每一年才更新一次根证书,操作系统验证的是根证书,浏览器主要获取二级证书和主证书。
TLS通讯过程
验证身份 达成安全套件共识 传递秘钥 加密通信
- 浏览器向服务器发送client hello,不同浏览器所支持的安全套件和加密算法都不同,是为了告诉服务器我支持什么算法。
- Server Hello nginx会通过会的算法的列表,选择最喜欢的加密套件发送给客户端。
- 会把公钥证书server Certificates发送给客户端, 是包含证书链,找根证书库验证证书是否有效。
- 服务器会发server hello done,但完全套件选择了椭圆曲线算法,在3 4步之间会发送椭圆曲线算法的参数,方便第六步生成最终加密的秘钥。
- 客户端也要根据椭圆曲线的参数,生成自己的私钥,把公钥发给服务器。服务器有了私钥,再把公钥给回客户端。
- 服务器可根据自己的私钥和客户端的公钥共同生成双方加密的秘钥key generation,客户端可根据自己的私钥和服务端的公钥共同生成双方加密的秘钥key generation,而双方生成的秘钥是一样的,这由非对称加密保证DHCE。
- 最后通过最后的秘钥进行通信。
小文件用的是非对称加密算法RSA 大文件用对称加密算法AES
小文件多优化椭圆曲线算法 大文件考研AES 密码强度降低
certbot获取免费https
certbot官方网站
https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:全称:Hyper Text Transfer Protocol over Secure Socket Layer,则是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
Https使用的是443端口
在Ubuntu上进行设置
在安装好certbot后,可执行以下命令:
certbot --nginx --nginx-server-root=/usr/local/openresty/nginx/conf/ -d www.xxxxx.com
这样就会去获取证书,然后部署到openresty的nginx中,接着给你两个选择,一个不要重定向(No redirect),另一个做重定向(Redirect)。有了https站点后,会希望所有明文显示不安全的流量全部用301和302重定向协议,转到https站点。那么继续访问http站点还是可以的。
certbot在nginx.conf中的工作
在http中多添加5行,打开443,公钥和私钥证书也会放置好