如何让网站使用https
Let’s encrypt
获取ssl证书,让网站安全访问
验证方式
http验证
给你一个随机内容的文件,你把这个文件放在一个特定的位置,用待绑定的域名+特定path可以访问到这个文件,可以认为域名是你的
DNS验证
给你一个随机字符串,你把这个字符串添加为待绑定域名的txt值,只要能通过公网上的DNS服务器解析到这个字串,就认为域名是你的
安装
1 | apt install certbot |
http验证
验证
http验证比较简单,按照提示步骤即可
1 | sudo certbot --nginx |
- 更新
1
sudo certbot renew
DNS验证
验证
DNS验证多了一步,要到DNS服务上添加一条text记录1
certbot --text --agree-tos --email <your@email.com> -d <your.domain.com> --manual --preferred-challenges dns --expand --renew-by-default --manual-public-ip-logging-ok certonly
更新
1
certbot --manual --preferred-challenges dns certonly
服务器(nginx)
其中fullchain.pem,privkey.pem都是上述验证命令给出的位置
1 | server { |
FAQ
http验证简单,为什么要DNS验证
如果vps服务器供应商屏蔽了http的80/443端口,那么http就无法验证,所以可以使用DNS验证
既然80/443端口被封,那么要ssl证书有什么用
http无论那个端口在域名没有备案时都会直接被封,因为服务器厂商能过截获http明文报文内容,
https经过加密厂商无法知道传输内容,所以加密的重要性就不言而喻了(tls/ssl)dns方式更新了证书后,依然过期
由于没有重启nginx服务器,导致nginx保存的依然是旧的证书
关于通配符域名证书
申请域名证书时指定域名为*.example.com,即可为该域名的所有二级域名申请证书
但是该证书对于根域名example.com不适用,所以根域名也要单独申请证书
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.