文章目录
- 官网
- 文档
- 简介
- 安装 Nginx
- acme.sh
- 生成证书
- 智能化生成证书
- 安装证书
- 查看已安装证书
- 更新证书
官网
- https://letsencrypt.org/zh-cn/
文档
- https://letsencrypt.org/zh-cn/docs/
简介
Let’s Encrypt 是一个非营利组织提供的免费SSL/TLS证书颁发机构,旨在促进网站加密和网络安全普及化。
-
免费性质: Let’s Encrypt 提供的SSL证书完全免费,没有任何费用。这使得任何网站都可以轻松获取和部署HTTPS加密,无需支付昂贵的证书费用。
-
自动化: Let’s Encrypt 支持自动化证书颁发和更新过程。使用自动化工具(比如 Certbot),可以轻松地配置服务器以自动申请、安装和更新证书,无需人工干预。
-
开放标准: Let’s Encrypt 遵循开放、透明和合作的原则。他们的证书签发过程和证书信息都是公开的,符合Web安全和隐私保护的最佳实践。
-
支持广泛: Let’s Encrypt 的证书得到了各大操作系统、浏览器和服务器的广泛支持,可以与几乎所有的Web服务器(如Apache、Nginx等)和操作系统(如Linux、Windows等)兼容使用。
-
推动HTTPS普及: Let’s Encrypt 的出现大大促进了全球范围内网站从不安全的HTTP协议向安全的HTTPS协议过渡。这有助于保护用户隐私、增强网站安全性,并提升搜索引擎排名。
安装 Nginx
sudo yum update
sudo yum install -y nginx
# 启动 nginx 服务
sudo systemctl start nginx
sudo systemctl enable nginx
# 配置防火墙(如果需要)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# nginx 配置目录
cd /etc/nginx/conf.d/
# 重新加载配置命令
nginx -s reload
acme.sh
- Github:https://github.com/acmesh-official/acme.sh
- 中文文档:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
yum install -y git socat
# 下载源码
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
# 查看帮助
./acme.sh -h
# 安装 acme.sh
./acme.sh --install -m xxxxxxxx@qq.com
生成证书
- 配置 Nginx 验证域名所有权
cd /etc/nginx/conf.d/
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /usr/share/nginx/html;
}
- 域名所有权完成验证后将自动生成证书
./acme.sh --issue -d mydomain.com -w /usr/share/nginx/html
- http://mydomain.com/.well-known/acme-challenge/wyN1055oc15cznMobG4UktJmsv-1XzLs02wHX4ItZ44
注意: 验证文件会自动生成在 /usr/share/nginx/html/.well-known/acme-challenge/ 目录下,域名所有权验证完成后会自动删除验证文件。
智能化生成证书
- 智能的从 nginx的配置中自动完成验证并生成证书
./acme.sh --issue -d mydomain.com --nginx
- Nginx 配置文件会自动添加以下内容
#ACME_NGINX_START
location ~ "^/\.well-known/acme-challenge/([-_a-zA-Z0-9]+)$" {
default_type text/plain;
return 200 "$1._8n2zB99yJbdcviQ_YNGlAdW6N3M2BJbgzbaYVAacuQ";
}
#NGINX_START
安装证书
./acme.sh --install-cert -d mydomain.com \
--key-file /etc/nginx/ssl/mydomain.com.key \
--fullchain-file /etc/nginx/ssl/mydomain.com.pem \
--reloadcmd "service nginx force-reload"
- 或者把证书文件输出到 /home 目录
./acme.sh --install-cert -d mydomain.com \
--key-file /home/mydomain.com.key \
--fullchain-file /home/mydomain.com.pem
查看已安装证书
./acme.sh --info -d mydomain.com
更新证书
crontab -l
56 * * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心。