某阿X云服务平台的证书托管服务中,有关于HTTPS证书获取,生成和自动更新的功能。但其作为一项增值服务,每月就要几百元 。但是这个我们可以自己写几行代码来实现,
- 证书生成
- 更新到Nginx
- 自动更新
假设我们有个域名wu123.cn
要为域名 生成 SSL 证书和密钥。
使用 Let’s Encrypt 免费 SSL 证书:Let’s Encrypt 是一个免费的、自动化的、开放的证书颁发机构 (CA),可以为你的域名生成免费的 SSL 证书。
1. 证书生成
使用 Let’s Encrypt 生成 SSL 证书,Let’s Encrypt 提供免费的 SSL 证书,并且可以使用 Certbot 工具自动生成和管理证书。
安装 Certbot,在 Ubuntu 上安装 Certbot:
sudo apt update
sudo apt install certbot python3-certbot-nginx
2. 更新到Nginx
2.1 使用 Certbot 生成 SSL 证书,生成 SSL 证书:
sudo certbot --nginx -d wu123.cn -d www.wu123.cn
Certbot 会自动配置 Nginx 并生成 SSL 证书和密钥。
证书和密钥文件通常会生成在 /etc/letsencrypt/live/wu123.cn/
目录下。
2.2 配置 Nginx 使用 SSL 证书,一个 Nginx 配置示例,展示了如何使用生成的 SSL 证书:
Nginx 配置文件 (/etc/nginx/sites-available/default
)
server {listen 80;server_name wu123.cn www.wu123.cn;location / {return 301 https://$host$request_uri;}
}server {listen 443 ssl;server_name wu123.cn www.wu123.cn;ssl_certificate /etc/letsencrypt/live/wu123.cn/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/wu123.cn/privkey.pem;location / {proxy_pass <http://localhost:3000>; # 你的应用服务器proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}
3. 自动更新
# 测试一下自动更新
sudo certbot renew --dry-run
# 添加到定时任务
sudo crontab -e
0 0 * * 0 /usr/bin/certbot renew --quiet
至此,通过以上三步,便完成了HTTPS证书的生成,以及更新维护。
https://i-blog.csdnimg.cn/img_convert/64342394d7120cff01ccde2fb232a915.webp?x-oss-process=image/format,png" alt="" />