前言
小程序,坑爹的小程序所有的接口必須是https的茬斧,本來(lái)想偷的懶現(xiàn)在是必須的要還上吧寺。先是去aliyun看了看https證書(shū)價(jià)格最最便宜一年也要1700,玩蛋去吧橄仍,我們無(wú)產(chǎn)階級(jí)用不起韧涨。只能找一個(gè)替代方案,這個(gè)替代方案就是Let's Encrypt的免費(fèi)證書(shū)沙兰,但是免費(fèi)就是要手動(dòng)了(每三個(gè)月需要生成一個(gè)新證書(shū))氓奈,這個(gè)年頭有錢(qián)才有方便。
安利下幫朋友做的小站:傳送門(mén)
0x1.環(huán)境介紹
我的Linux主機(jī)是阿里云鼎天,也是為了簡(jiǎn)單我沒(méi)有選擇Centos系統(tǒng),而是應(yīng)用了Ubuntu暑竟,沒(méi)別的就是簡(jiǎn)單(不偷懶的技術(shù)人員不是好男人)斋射。
其他標(biāo)配選擇,以下三個(gè)配置不講了但荤,PHP程序員都懂的:
- Nginx
- MySQL
- PHP
0x2.配置證書(shū)
首先罗岖,我們需要安裝一個(gè)https生成的客戶端
sudo apt-get install letsencrypt
在你生成證書(shū)之前,請(qǐng)你先關(guān)閉你的nginx服務(wù)腹躁,防止對(duì)應(yīng)的端口占用桑包。這個(gè)操作我都是晚上做的,白天網(wǎng)站還是有人的纺非。
sudo letsencrypt certonly --standalone
接下來(lái)會(huì)出現(xiàn)一個(gè)文字圖形界面哑了。輸入你的電子郵箱地址赘方。
之后同意條款
最后輸入服務(wù)器的域名。在具有DNS記錄的前提下弱左,你還可以加上任何你想要的二級(jí)域名窄陡。多個(gè)域名需要用空格分割開(kāi),稍等片刻后拆火,客戶端會(huì)完成身份驗(yàn)證跳夭。相關(guān)證書(shū)會(huì)放到 /etc/letsencrypt 文件夾下。
把example.com替換成為你自己的域名们镜。保存后記得啟動(dòng)nginx服務(wù)器
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.證書(shū)更新
這個(gè)證書(shū)雖然說(shuō)是免費(fèi)币叹,但是時(shí)間只有三個(gè)月,所以必須每三個(gè)月更新一次證書(shū)模狭,否則證書(shū)過(guò)期颈抚。好在別人已經(jīng)有腳本了,不怕搞事情胞皱。
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
這個(gè)證書(shū)自動(dòng)更新程序邪意,假設(shè)我放在 /data/ 文件夾中,那么我們的運(yùn)行路徑就是 /data/certbot-auto反砌。這樣我們可以寫(xiě)腳本了去跑crontab了雾鬼。
接下來(lái),創(chuàng)建一個(gè)shell腳本 refresh.sh
touch refresh.sh
chmod a+x refresh.sh
然后 vi refresh.sh 輸入以下內(nèi)容
#!/bin/bash
# 先停止 Nginx, 釋放端口
sudo service nginx stop
# 更新證書(shū)
sudo /data/certbot-auto renew --force-renew
# 啟動(dòng) Nginx
sudo service nginx start
最后當(dāng)然是 crontab -e 你說(shuō)三個(gè)月過(guò)期宴树,我兩個(gè)月更新一次不過(guò)分吧
# 每隔兩個(gè)月一號(hào)23:59執(zhí)行
59 23 1 */2 * /data/refresh.sh
所有的設(shè)置完畢策菜,希望這個(gè)總結(jié)對(duì)大家有用。