前言
小程序,坑爹的小程序所有的接口必须是https的,本来想偷的懒现在是必须的要还上。先是去aliyun看了看https证书价格最最便宜一年也要1700,玩蛋去吧,我们无产阶级用不起。只能找一个替代方案,这个替代方案就是Let's Encrypt的免费证书,但是免费就是要手动了(每三个月需要生成一个新证书),这个年头有钱才有方便。
安利下帮朋友做的小站:传送门
0x1.环境介绍
我的Linux主机是阿里云,也是为了简单我没有选择Centos系统,而是应用了Ubuntu,没别的就是简单(不偷懒的技术人员不是好男人)。
其他标配选择,以下三个配置不讲了,PHP程序员都懂的:
- Nginx
- MySQL
- PHP
0x2.配置证书
首先,我们需要安装一个https生成的客户端
sudo apt-get install letsencrypt
在你生成证书之前,请你先关闭你的nginx服务,防止对应的端口占用。这个操作我都是晚上做的,白天网站还是有人的。
sudo letsencrypt certonly --standalone
接下来会出现一个文字图形界面。输入你的电子邮箱地址。

之后同意条款

最后输入服务器的域名。在具有DNS记录的前提下,你还可以加上任何你想要的二级域名。多个域名需要用空格分割开,稍等片刻后,客户端会完成身份验证。相关证书会放到 /etc/letsencrypt 文件夹下。

把example.com替换成为你自己的域名。保存后记得启动nginx服务器
http {
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
root /var/www/html;
}
...
}
...
}
0x3.证书更新
这个证书虽然说是免费,但是时间只有三个月,所以必须每三个月更新一次证书,否则证书过期。好在别人已经有脚本了,不怕搞事情。
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
这个证书自动更新程序,假设我放在 /data/ 文件夹中,那么我们的运行路径就是 /data/certbot-auto。这样我们可以写脚本了去跑crontab了。
接下来,创建一个shell脚本 refresh.sh
touch refresh.sh
chmod a+x refresh.sh
然后 vi refresh.sh 输入以下内容
#!/bin/bash
# 先停止 Nginx, 释放端口
sudo service nginx stop
# 更新证书
sudo /data/certbot-auto renew --force-renew
# 启动 Nginx
sudo service nginx start
最后当然是 crontab -e 你说三个月过期,我两个月更新一次不过分吧
# 每隔两个月一号23:59执行
59 23 1 */2 * /data/refresh.sh
所有的设置完毕,希望这个总结对大家有用。
网友评论