续约SSL证书出现域名unauthorized

续约SSL证书出现域名unauthorized

Scroll Down

引言

早在好几天前,Let's Encrypt就发邮件给我说证书快过期的事,于是在今晚决定把证书续约,结果,引发了一个不大不小的问题

提示域名未认证!

SSH连上服务器后,首先一顿操作

systemctl stop nginx.service #关闭nginx
sudo certbot renew --nginx  #更新证书
#也可sudo certbot --nginx,但会询问你覆盖还是续约

错误就出现了
20200310191844
What!说我的域名未认证!我当时就纳闷了,这是一个啥子情况。
但当我看到最后一行报错时,我恍然大了个悟:
20200310192942
这意思就明摆着说我的域名解析出了问题,没有A类解析。因为我是使用了又拍云的CDN服务的(本机1M带宽的小水管想要加加速),所以将@和www的记录类型都改为了CNAME,记录值为又拍云给出的CNAME值。

一番修改后,再次运行命令,成了!

反思

  • 不该用这只有三个月时效的证书,应该用一年的
  • 升级小水管服务器是很有必要的,不然每次都要修改域名解析的记录类型,改来改去,岂不心累?

关于用 certbot 自动生成 ssl 证书

第一种办法

给一个链接,有涉及通配符证书申请的也可以参考此篇
http网站快捷免费升级到https

第二种办法(也就是我使用的)

以下给出个完整的流程

# 安装 certbot 以及 certbot nginx 插件
sudo yum install certbot python2-certbot-nginx -y
# 执行配置,中途会询问你的邮箱(通知你证书过期之类的消息),如实填写即可
sudo certbot --nginx
#后续会让你选择域名(你填入Nginx conf文件的域名),是否强制HTTPS跳转

对,就两行。但前提是你得先写好Nginx的配置文件,因为该种办法是通过你的Nginx的conf文件中的域名来为你申请证书的,并将证书文件的相关信息自动的加在你的Nginx conf文件的相应位置,非常方便。
而第一种办法则是先申请证书,再自己配置到Nginx中去。

如果证书已经存在,运行certbot --nginx 命令则会让你选择是尝试重新安装还是续约

定时更新证书

如果你没有像我一样使用CDN服务而将域名解析类型修改,那么写一个定时任务脚本是极佳的,可以选择每个月的1号进行证书的更新检查

一般来说CentOS系统里面都自动内置了crontab程序,如果没有,那么centos安装crontab命令如下

yum install vixie-cron crontabs //安装Crontab
chkconfig crond on //设为开机自启动
service crond start //启动

Crontab使用方法

crontab -l  //查看crontab定时执行任务列表
crontab -e   //添加crontab定时执行任务

输入crontab -e添加命令,输入a进入编辑状态,然后用方向键选到新的一行,加上规则:
0 3 1 * * /root/certbot-auto renew –renew-hook “nginx -s reload”
这里的certbot-auto路径根据个人安装变化,

注意,按照第一种申请证书方法需安装certbot-auto证书生成工具。如果是用的第二种方法,则使用sudo certbot renew --nginx命令