需求
公司想弄一个https最好是免费的,小公司如果付费的话一年也得花不少费用呢?
一般免费的ssl是30-60试用的,如果想一直免费下去,是不是写了下脚本,到期就重新购买一个新的就行了?还真有一个脚本名字叫“acme.sh”,它是自动给你更新证书的
acme.sh教程地址:
https://github.com/Neilpang/acme.sh
中文使用说明:https://github.com/Neilpang/acme.sh/wiki/说明
一、实验环境
1. centos6.5 64位,用yum安装的nginx
2. nginx的ssl证书
二、acme.sh安装
建议你拿一个线上在跑的域名,新建立一个二级域名来测试,我这里所有的安装都是直接使用root用户。
#用curl https://get.acme.sh | sh 安装发现有问题,改用win下用git bash执行git clone
#直接去官网手工下载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
#并创建 一个 bash 的 alias
alias acme.sh=~/.acme.sh/acme.sh
三、生成证书
#dns 方式
acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成,更详细的api 用法: https://github.com/Neilpang/acme.sh/wiki/dnsapi
#我这里用的是dnspod解释的,所以用它生成token
#登陆dnspod-->用户中心-->安全设置-->旁边的“API Token”,生成一个token
#在ssh上执行
cd /root/.acme.sh/
export DP_Id="dnspod ID值"
export DP_Key="dnspod Token值"
#为了方便生成一个通知证书
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 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.
默认已经加入定时任务中
8 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
升级 acme.sh 到最新版 :
acme.sh --upgrade
如果你不想手动升级, 可以开启自动升级:
acme.sh --upgrade --auto-upgrade
之后, acme.sh 就会自动保持更新了.