摘自wiki
HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包
HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性
与HTTP的差异
与HTTP的URL由"http://"起始且默认使用端口80不同,HTTPS的URL由"https://"起始且默认使用端口443
HTTP是不安全的,且攻击者通过监听和中间人攻击等手段,可以获取网站帐户和敏感信息等
HTTPS被设计为可防止前述攻击,并在正确配置时被认为是安全的
为什么使用HTTPS
你有可能会想,一个博客又不涉及到账号登录,支付什么的功能,为何要使用HTTPS
2个理由:
- HTTPS已是大趋势,好的新东西应该接受学习
- 谷歌搜索排名更倾向于HTTPS优先排序
关于SSL证书和Let’s Encrypt
SSL证书有3大类
主要使用DV证书,其中免费的SSL证书有Let’s Encrypt
Let’s Encrypt由互联网安全研究小组(缩写ISRG)提供服务
主要赞助商包括电子前哨基金会、Mozilla基金会、Akamai以及思科
2015年4月9日,ISRG与Linux基金会宣布合作
建议使用阿里云证书
免费证书,一年有效期,到期可续
免费型DV SSL
使用Certbot获取证书
# 下载 Certbot 客户端
$ wget https://dl.eff.org/certbot-auto
# 设为可执行权限
$ chmod a+x certbot-auto
(推荐使用参考文档acme.sh方式获取证书,更方便,无需手动验证DNS和更新证书)
申请证书:
# www.xxx.com修改为你的域名地址
$ ./certbot-auto certonly -d "www.xxx.com" --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
# 二级域名示例(pic.xuchuruo.cn,比如七牛云图片需要二级域名)
$ ./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d "www.xuchuruo.cn" -d "pic.xuchuruo.cn" --manual --preferred-challenges dns-01 certonly
之后会出现下图的操作
-
注意,出现下图的时候先不要按回车,这里需要进行DNS认证(二级域名做2次DNS认证)
-
复制红框里的到阿里云DNS解析(二级域名认证要按2次回车)
到这一步,证书申请完成,包含了证书地址和到期时间(3个月,到期更新即可)
如下目录会有4个pem文件
$ cd /etc/letsencrypt/live/www.xxx.com/
.
├── cert.pem
├── chain.pem
├── fullchain.pem
└── privkey.pem
到此,SSL证书申请完毕,接下来配置nginx
Nginx配置HTTPS访问
在http里的server中加上https跳转
# 注意是在http的花括号里
return 301 https://$server_name$request_uri;
然后在最后找到HTTPS server
添加如下配置
# HTTPS server
server{
server_name www.xuchuruo.cn xuchuruo.cn;
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.xuchuruo.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.xuchuruo.cn/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/www.xuchuruo.cn/chain.pem;
location / {
root 首页位置;
index index.html index.htm;
}
}
重启nginx
# 此命令防止nginx配置错误,导致nginx无法运行
$ ./nginx -t
如下图表示nginx配置成功,重启访问即可
$ ./nginx -s reload
证书续期
在Certbot下载的位置执行
# 命令无效的话重新执行申请证书的命令,再验证新的DNS
$ ./certbot-auto renew
进入证书目录,将新证书重命名,老证书删除,重启Nginx即可
$ cd /etc/letsencrypt/live/
可写定时脚本自动更新 我没用,感觉麻烦
如果使用了七牛云,二级域名需要重新验证DNS
参考文档
https://my.oschina.net/kimver/blog/1634575