最近几年,网站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
因为我的域名使用的腾讯云的解析,所以需要加上这个
否则会报错
DNS添加TXT解析
执行命令后,出现下图信息,输入Y确认
然后会生成一个需要添加到DNS解析的记录值
在自己的解析服务器里面添加该条TXT解析,注意解析类型要选TXT
生成证书
在上面配置好DNS解析后,点击回车,此时Certbot会自动检测DNS是否已经添加,如果已经添加,则会自动生成正式,否则需要检查DNS是否维护正确
配置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; }
|