Let's Encrypt 能够免费签名一个证书,所以假如要求不高,可以使用它签名的证书,使用也非常的简单,只要验证邮箱地址就能使用了,不过有 90 天的有效期(到期前可以续)。
为了生成证书,Let's Encrypt 提供了一个软件 Certbot 来进行管理,这个软件有很多插件,可以生成证书并自动化配置 Nginx/Apache ,不过我还是选择使用它生成密钥对和证书,然后自己在 WEB 服务器上进行配置,使用很简单。
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbotsudo ln -s /snap/bin/certbot /usr/bin/certbot
接下来我们要使用 certbot 命令初次申请证书,命令格式如下:
certbot certonly --webroot -w [Web站点目录] -d [站点域名] -m [联系人email地址] --agree-tos
实际示例
certbot certonly --webroot -w /usr/local/nginx/html -d www.isture.com -m 312905679@qq.com --agree-tos
/etc/letsencrypt/live/
openssl x509 -noout -dates -in /etc/letsencrypt/live/www.isture.com/cert.pem
Let's Encrypt 证书的有效期是 90 天,需要长期使用的话,需要在失效前进行延长申请。我们可以执行如下命令去更新:
//更新证书
certbot renew --dry-run
//如果不需要返回的信息,可以用静默方式
certbot renew --quiet
// 更新指定域名证书
certbot certonly -d www.isture.com
- 我们也可以将更新证书的脚本写到定时任务来自动完成,免得我们手动操作。首先执行如下命令开始编辑定时任务:
crontab -e
- 此时会进入 vi 的编辑界面让你编辑工作(每项工作都是一行)。我们在末尾添加如下一行内容,表示每月 1 号 5 时会执行执行一次更新,并重启 nginx 服务器:
00 05 01 * * /usr/bin/certbot renew --quiet && /bin/systemctl restart nginxcertbot certonly --email 312905679@qq.com -d test.isture.com 这里选择第二项
输入网址根目录
Requesting a certificate for test.isture.com
Performing the following challenges:
http-01 challenge for test.isture.com
Input the webroot for test.isture.com: (Enter 'c' to cancel): /home/test-portal
server {
listen 80;
listen 443 ssl;
server_name test.isture.com;
ssl_certificate /etc/letsencrypt/live/test.isture.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.isture.com/privkey.pem;
location / {
proxy_pass http://localhost:8085;
}
}certbot certificates以上可以看出此https 证书已经过期了
certbot renew --dry-run
certbot renew
问题标的比较明确: DNS Problem .
ping 不通该域名,可能是域名解析没有配置







