- A+
注意:不论是什么操作请在开始前备份重要文件,以防发生意外
本文步骤和代码示例仅适用于Nginx服务器。如果你使用的是其他Web服务器(如Apache),则需要相应地调整配置和命令。此外,确保在生产环境中仔细测试和验证配置,以避免意外中断服务。其中不是以root
身份操作需要在命令前加sudo
反之不用
申请证书
申请泛域名证书(Centos和Ubuntu通用):
certbot certonly --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory --email [email protected] -d *.yourdomain.com
其中,[email protected]
是您的电子邮件地址,*.yourdomain.com
是您的泛域名。
Centos系统
安装Certbot:
- 打开终端,以root用户身份登录到你的CentOS服务器。
- 运行以下命令来添加Certbot存储库并安装Certbot:
yum install epel-release
yum install certbot
配置Certbot:
- 运行以下命令来生成Certbot的配置文件:
certbot --nginx -d example.com -d www.example.com
其中,example.com
是你的域名,www.example.com
是可选的二级域名。你可以根据需要添加更多的域名。
- Certbot将提示你提供一些信息,如电子邮件地址和同意协议等。按照提示进行操作。
- 完成配置后,Certbot将生成Nginx的配置文件,并将其放置在适当的位置。
生成证书:
- 运行以下命令来启动Certbot的证书生成过程:
certbot --nginx -d example.com -d www.example.com --agree-tos --no-eff-email --force-renewal
这将生成新的证书或续订现有证书。
自动续订:
为了实现自动续订,你需要设置一个定时任务(如cron job)。编辑crontab文件,添加以下行:
0 0,12 * * * root certbot renew --quiet && service nginx reload
这将在每天的午夜和中午执行Certbot的续订命令,并在成功续订后重新加载Nginx服务。
保存并关闭crontab文件。
配置Nginx:
- 确保你的Nginx配置文件中包含以下内容,以正确配置SSL证书:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 其他Nginx配置...
}
请确保将example.com
替换为你的域名,并将证书路径设置为正确的路径。
保存并关闭Nginx配置文件。
测试:
- 重新启动Nginx服务,使更改生效:
systemctl restart nginx
在浏览器中访问你的网站,并检查是否已启用HTTPS。你还可以查看浏览器的安全选项卡,以确保SSL证书被正确识别。
强制https
- 打开终端或命令提示符。
- 输入以下命令以编辑Nginx配置文件(假设你的Nginx配置文件位于
/etc/nginx/nginx.conf
):
sudo nano /etc/nginx/nginx.conf
- 在文件中找到与你的网站相关的server块。
- 在该server块中添加以下代码行:
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
这将检查请求的协议是否为HTTPS,如果不是,则将其重定向到HTTPS版本。
- 保存并关闭文件。
- 重新启动Nginx服务以使更改生效:
sudo systemctl restart nginx
Ubuntu系统
在Ubuntu上自动续订Let's Encrypt证书,可以使用acme.sh
这一工具来实现。
安装acme.sh
:
- 打开终端,运行以下命令来安装
acme.sh
:
curl https://get.acme.sh | sh
- 或者
wget -O - https://get.acme.sh | sh
这将会从GitHub上下载acme.sh
脚本并执行。
生成和安装证书:
- 使用
acme.sh
生成证书,并指定你想要申请证书的域名,例如:
acme.sh --issue --dns dns_provider -d example.com
其中dns_provider
是你的DNS提供商,example.com
是你的域名。
acme.sh
将引导你完成验证过程,包括设置DNS记录等。
配置Nginx:
- 在Nginx的配置中,指定证书和私钥的路径,通常位于
/etc/acme.sh/example.com
目录下。配置文件示例:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/acme.sh/example.com/fullchain.cer;
ssl_certificate_key /etc/acme.sh/example.com/example.com.key;
# 其他Nginx配置...
}
设置自动续期:
- 编辑crontab文件来设置定时任务,以实现自动续订功能:
crontab -e
- 添加以下行以设置每天凌晨2点自动续订证书:
0 2 * * * certbot renew --quiet
通过以上步骤,你就可以在Ubuntu服务器上自动续费Let's Encrypt证书了。
在Ubuntu上添加强制HTTPS的命令
- 打开终端或命令提示符。
- 输入以下命令以编辑Nginx配置文件(假设您的Nginx配置文件位于
/etc/nginx/sites-available/default
):
sudo nano /etc/nginx/sites-available/default
- 在文件中找到与您的网站相关的server块。
- 在该server块中添加以下代码行:
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
这将检查请求的协议是否为HTTPS,如果不是,则将其重定向到HTTPS版本。
- 保存并关闭文件。
- 重新启动Nginx服务以使更改生效:
sudo systemctl restart nginx
宝塔面板
网站面板自动续费
注意:dns提供商的免费用户使用国内的dns接口时注意关闭域名的DNSSEC
,当然你是付费用的没有关系(因为在国内DNSSEC
是收费项目,国外是免费项目)如果不关闭会导致ssl申请失败和解析错误
1panel面板
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫