今天小伙伴告诉我博客的证书过期了(我隐约想起来 Kaybase 发给过我一封邮件告诉我网站所有权验证失败,被我给忽略掉了)。早上开始 renew 证书。这个过程太乌龙了,记一下吧,顺便推广一下 Let’s Encrypt。
之前的证书是腾讯云的免费 1 年的 TrustAsia 证书,用了应该两年了,这次第一反应也是打开腾讯云续命。后来万万没有想到被腾讯云的这个登陆搞了半天。
没想到腾讯云登陆不上了…… 需要我提供手机验证码,但是我现在的手机号试了十几次都收不到腾讯云的验证码。打联通的客服,客服让我发短信到一个号码,那个号码一直说“系统繁忙,请稍后再试”,网上的诸如 “发送 11111 到 106xxx 的号码” 也不好使,还有网友说让朋友尝试登陆一下他的账号,然后你往朋友收到验证码的那个号码发送 11111,我试过了也不好使。
我决定换成 Let’s Encrypt 的证书。
Let’s Encrypt 的证书一般是由 Certbot 自动签发的。但是像我这种用古老的 PHP 空间提供商的,就只好使用手动模式了。
以下教程是使用 Mac 系统手动申请网站证书的教程。
首先在 Mac 上安装 Certbot:
1 |
brew install certbot |
然后用手动模式开始申请证书(默认的 log 位置需要 root 权限,我直接用 sudo 跑了)。
1 |
sudo certbot certonly --manual |
然后根据提示输入域名,这里可以输入多个。
1 2 3 4 |
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): |
同意记录申请机器的 IP。
1 2 3 4 5 |
NOTE: The IP of this machine will be publicly logged as having requested this certificate. If you're running certbot in manual mode on a machine that is not your server, please ensure you're okay with that. Are you OK with your IP being logged? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y |
接下来会出现 ACME 挑战,这个挑战的意义是让你证明的域名是你的(否则的话别人就可以申请一个你的域名的证书,用来做中间人攻击了)。ACME 挑战有两种: http 和 dns,http ACME 挑战就是在你网站的 .well-known/
下面放一个文件,显示特定的文本。dns ACME 挑战是添加一条 TXT DNS 记录到你的 DNS 解析中。默认使用的是 http,如果要使用 dns 的话,最开始的命令要添加一个选项,如下:
1 |
sudo certbot certonly --manual --preferred-challenges dns |
这里准备好证明(http 的话就放好那个文件,dns 的话就准备好解析记录),然后自己试一下(一定要试一下,不然失败了要重来),再按下回车,Cerbot 会去验证。
验证过后证书就颁发好了,Certbot 会打印出证书和 key 的路径。有效期只有三个月,所以手动模式的话还是挺麻烦的。
你好,看了你的博客后我也用wordpress搭了一个博客,打算长期记录生活。养成个好的习惯,但是新手上路往往因为找插件,改主题等浪费很多时间。如果方便的话可以介绍下你用到的比较好用的插件吗?谢谢
比较重要的就这几个吧。