logo头像

aferica

使用Let's Encrypt免费SSL证书

本文于643天之前发表,文中内容可能已经过时。

最近几年,网站HTPPS已基本成为标配,如果没有加密,很多功能都无法满足,例如为小程序提供API,IOS访问安全等等,但一年花个大几千购买付费SSL证书,对于我们来说有十分不合算,这是就需要Let’s Encrypt官方文档来帮忙解决

前置条件

安装前,安装nginx(具体可以根据自己需要)

1
sudo apt-get install nginx

安装

1
2
3
4
5
6
7
8
# 添加包package repository:
sudo add-apt-repository ppa:certbot/certbot

# 更新源
sudo apt-get update

# 安装Certbot的nginx package
sudo apt-get install python-certbot-nginx

签发证书

为了一劳永逸(懒),使用一个通配证书来适配N个子域名无疑是最省心省力的,后续添加子域名,证书一样使用

1
2
3
4
5
certbot certonly --preferred-challenges dns --manual -d *.aferica.site

// or

certbot certonly -d *.aferica.site --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

说明:

--preferred-challenges dns --manual因为我的域名使用的腾讯云的解析,所以需要加上这个
否则会报错
20220404154311

DNS添加TXT解析

执行命令后,出现下图信息,输入Y确认
20220404154515
然后会生成一个需要添加到DNS解析的记录值
20220404154633
在自己的解析服务器里面添加该条TXT解析,注意解析类型要选TXT
20220404154754

生成证书

在上面配置好DNS解析后,点击回车,此时Certbot会自动检测DNS是否已经添加,如果已经添加,则会自动生成正式,否则需要检查DNS是否维护正确
20220404155037

配置Nginx

生成了证书,只差最后一步配置Nginx就可以了,下面是一个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

server {
listen 443;
server_name aferica.site;
root /www/html;
index index.html;

ssl on;
ssl_certificate /etc/letsencrypt/live/aferica.site/fullchain.pem; # 上图中自动生成证书的路径
ssl_certificate_key /etc/letsencrypt/live/aferica.site/privkey.pem; # 上图中自动生成证书的路径
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-RC4-SHA:!ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:HIGH:!RC4-SHA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!CBC:!EDH:!kEDH:!PSK:!SRP:!kECDH;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;
client_max_body_size 1000m;
}
微信打赏

你的赞赏是对我最大的鼓励