需求
公司想弄一個(gè)https最好是免費(fèi)的,小公司如果付費(fèi)的話一年也得花不少費(fèi)用呢?
一般免費(fèi)的ssl是30-60試用的,如果想一直免費(fèi)下去,是不是寫了下腳本,到期就重新購(gòu)買一個(gè)新的就行了?還真有一個(gè)腳本名字叫“acme.sh”,它是自動(dòng)給你更新證書的
acme.sh教程地址:
https://github.com/Neilpang/acme.sh
中文使用說(shuō)明:https://github.com/Neilpang/acme.sh/wiki/說(shuō)明
一、實(shí)驗(yàn)環(huán)境
1. centos6.5 64位,用yum安裝的nginx
2. nginx的ssl證書
二、acme.sh安裝
建議你拿一個(gè)線上在跑的域名,新建立一個(gè)二級(jí)域名來(lái)測(cè)試,我這里所有的安裝都是直接使用root用戶。
#用curl https://get.acme.sh | sh 安裝發(fā)現(xiàn)有問(wèn)題,改用win下用git bash執(zhí)行g(shù)it clone
#直接去官網(wǎng)手工下載zip包再上傳
#安裝依賴
yum install socat
cd /disk1/tools/
#上傳zip
mv acme.sh-master.zip acme.sh.zip
unzip acme.sh.zip
mv acme.sh-master acme.sh
cd acme.sh
./acme.sh --install
#并創(chuàng)建 一個(gè) bash 的 alias
alias acme.sh=~/.acme.sh/acme.sh
三、生成證書
#dns 方式
acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等數(shù)十種解析商的自動(dòng)集成,更詳細(xì)的api 用法: https://github.com/Neilpang/acme.sh/wiki/dnsapi
#我這里用的是dnspod解釋的,所以用它生成token
#登陸dnspod-->用戶中心-->安全設(shè)置-->旁邊的“API Token”,生成一個(gè)token
#在ssh上執(zhí)行
cd /root/.acme.sh/
export DP_Id="dnspod ID值"
export DP_Key="dnspod Token值"
#為了方便生成一個(gè)通知證書
acme.sh --issue --dns dns_dp -d hualinux.com -d *.hualinux.com
#建立nginx證書
mkdir /etc/nginx/ssl
#copy/安裝 證書,我這里的域名是hualinux
acme.sh? --installcert? -d? hualinux.com? \
? ? ? ? --key-file? /etc/nginx/ssl/allhualinux.key \
? ? ? ? --fullchain-file /etc/nginx/ssl/fullchain.cer \
? ? ? ? --reloadcmd? "service nginx force-reload"
四、nginx配置ssl
server {
? ? listen? ? ? 80;
? ? listen? ? ? 443 ssl;
? ? #ssl on;
? ? server_name? t1.hualinux.com;
? ? #by hua
? ? ssl_certificate? /etc/nginx/ssl/fullchain.cer;
? ? ssl_certificate_key /etc/nginx/ssl/allhualinux.key;
? ? ...
? ? index index.php
? ? ...
}
五、更新 acme.sh
目前由于 acme 協(xié)議和 letsencrypt CA 都在頻繁的更新, 因此 acme.sh 也經(jīng)常更新以保持同步.
默認(rèn)已經(jīng)加入定時(shí)任務(wù)中
8 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
升級(jí) acme.sh 到最新版 :
acme.sh --upgrade
如果你不想手動(dòng)升級(jí), 可以開啟自動(dòng)升級(jí):
acme.sh? --upgrade? --auto-upgrade
之后, acme.sh 就會(huì)自動(dòng)保持更新了.