HTTPS化-Let's Encrypt免费SSL证书

摘自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基金会宣布合作

使用Certbot获取证书

1
2
3
4
5
# 下载 Certbot 客户端
$ wget https://dl.eff.org/certbot-auto

# 设为可执行权限
$ chmod a+x certbot-auto

(推荐使用参考文档acme.sh方式获取证书,更方便,无需手动验证DNS和更新证书)

申请证书:

1
2
3
4
5
# 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文件

1
2
3
4
5
6
$ cd /etc/letsencrypt/live/www.xxx.com/
.
├── cert.pem
├── chain.pem
├── fullchain.pem
└── privkey.pem

到此,SSL证书申请完毕,接下来配置nginx

Nginx配置HTTPS访问

在http里的server中加上https跳转

1
2
# 注意是在http的花括号里
return 301 https://$server_name$request_uri;

然后在最后找到HTTPS server

添加如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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

1
2
# 此命令防止nginx配置错误,导致nginx无法运行
$ ./nginx -t

如下图表示nginx配置成功,重启访问即可

1
$ ./nginx -s reload

证书续期

在Certbot下载的位置执行

1
2
# 命令无效的话重新执行申请证书的命令,再验证新的DNS
$ ./certbot-auto renew

进入证书目录,将新证书重命名,老证书删除,重启Nginx即可

1
$ cd /etc/letsencrypt/live/

可写定时脚本自动更新 我没用,感觉麻烦

如果使用了七牛云,二级域名需要重新验证DNS

参考文档

https://my.oschina.net/kimver/blog/1634575

------本文结束感谢阅读------

本文标题:HTTPS化-Let's Encrypt免费SSL证书

文章作者:churuo

原始链接:https://www.xuchuruo.cn/HTTPS化-Let-s-Encrypt免费SSL证书.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%