CentOS7 nginx SSL证书申请并自动续期
一、 安装Certbot
- 升级
Markup 全选
yum update -y
- 安装Certbot
Markup 全选
yum install certbot -y
- 查看版本
Markup 全选
certbot --version
二、单域名证书,校验文件的方式(推荐)
2.1. 创建文件夹用于存放域名校验文件
创建文件夹 /var/www/certbot
Markup 全选
mkdir -p /var/www/certbot
设置文件夹权限
Markup 全选
chmod 777 /var/www/certbot
2.2.修改Nginx配置
nginx配置文件添加跳转配置,放在顶部,如果已经
Markup 全选
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
例如:
Markup 全选
server {
listen 80;
server_name erp.jocsoft.cn;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
2.3.证书申请测试
Markup 全选
certbot certonly --webroot --webroot-path /var/www/certbot/ --dry-run -d erp.jocsoft.cn
命令解释
这个命令用于使用 webroot 插件申请证书,具体参数解释如下:
1. certbot certonly
certbot
是命令行工具,用来与 Let's Encrypt 交互并获取证书。certonly
是一个选项,意味着只申请证书,而不配置Web服务器。它不会自动修改Web服务器的配置,只有证书会被生成。
2. --webroot
- 这个选项告诉 Certbot 使用 webroot 插件 来进行域名验证。
- Webroot 插件通过在指定的 Web 服务器的根目录下放置一个临时文件,来验证你对该域名的所有权。Let’s Encrypt 会通过访问
http://example.org/.well-known/acme-challenge/
来检查该文件。
3. --webroot-path /var/www/certbot/
--webroot-path
指定了 Web 服务器的根目录。在这里,/var/www/certbot/
是你网站的根目录路径,Certbot 会在这个目录下创建临时的验证文件(/.well-known/acme-challenge/
)。- 需要确保这个目录是Web服务器可访问的,并且Certbot可以在其中创建临时文件。
4. --dry-run
--dry-run
是一个 模拟测试 选项,用来验证整个证书申请过程,但不会生成真实的证书。- 它会模拟整个申请过程,包括与 Let's Encrypt 服务器的交互,但实际上不会生成证书文件,也不会向你的网站服务器安装证书。这个选项非常有用,在正式申请证书前,检查配置是否正确。
5. -d example.org
-d
指定你要申请证书的域名。在这个例子中,example.org
是你申请证书的域名。- 你可以使用多个
-d
选项来为多个域名申请证书。例如:-d example.org -d www.example.org
。
总结
整个命令的意思是:
- 使用
webroot
插件来申请example.org
的证书。 - Web服务器的根目录是
/var/www/certbot/
。 - 运行一个 模拟测试,即不生成真实证书,只验证申请过程是否成功。
如果 --dry-run
测试通过,你可以去掉这个选项,并正式申请证书。
运行截图
2.4. 测试通过后,正式申请证书
Markup 全选
certbot certonly --webroot --webroot-path /var/www/certbot/ -d erp.jocsoft.cn
运行截图
生成的证书路径:/etc/letsencrypt/live
2.5. nginx配置ssl证书
Markup 全选
server {
listen 80;
server_name erp.jocsoft.cn;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
return 301 https://$host$request_uri; # http自动跳转https
}
server {
listen 443;
server_name erp.jocsoft.cn;
ssl_certificate /etc/letsencrypt/live/erp.jocsoft.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/erp.jocsoft.cn/privkey.pem;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
proxy_pass http://127.0.0.1:9002;
}
}
2.6. 重载nginx
Markup 全选
nginx -s reload
2.7 更新证书
Markup 全选
certboot renew
三、通配符证书
certbot -d jocsoft.cn -d *.jocsoft.cn --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory certonly --agree-tos
certbot -d yesdotnet.com -d *.yesdotnet.com --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory certonly --agree-tos
CentOS 7 上使用Certbot申请通配符证书-阿里云开发者社区
通配符需要设置DNS,自动续期的时候有点麻烦,还得添加解析,或者通过自动解析脚本,但是得申请key。
因此使用验证文件来申请单域名比较友好些吧,续期简单
其他备注信息
nginx反向代理中使用Certbot申请证书:
配置参考:
Markup 全选
server {
listen 80;
listen [::]:80;
server_name example.org;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://example.org$request_uri;
}
}
申请SSL证书后,是这样子:
Markup 全选
server {
listen 80;
listen [::]:80;
server_name example.org www.example.org;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://example.org$request_uri;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name example.org;
ssl_certificate /etc/nginx/ssl/live/example.org/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/example.org/privkey.pem;
location / {
proxy_pass http://<local IP>:<local port>/;
}
}
来源参考:通过 Docker 部署 Nginx 配置反向代理,并通过 Certbot 获取免费 SSL 证书 - Lemonade
删除证书;
C# 全选
certbot delete
会列出当前系统注册过的域名,然后输入要删除的序号即可
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 张国生