背景
HTTPS协议使用非对称加密的方式对数据进行加密,可以让数据传输变得更加安全可靠。而将HTTP协议切换成HTTPS协议,只需要增加SSL证书即可。
本文使用ACME工具来生成SSL证书,并将SSL证书部署应用于WEB服务,从而实现支持HTTPS协议的WEB服务。
ACME
ACME主要有以下几个功能
- 向Let’s Encrypt申请证书
- 支持包括阿里云在内的多个平台,通过多种接口为域名增加TXT解析
- 将证书部署于web服务
- 自动更新证书
前提配置
1.方法1 以Cloudfare为例,获取自身的Global API Key
。
2.方法2 添加管理云解析(DNS)的权限,生成API Token
安装ACME
只需要一行命令就可以安装ACME$ curl https://get.acme.sh | sh
或者$ wget -O - https://get.acme.sh | sh
安装一共包括下面几个步骤
- 将acme.sh脚本复制到~/.acme.sh路径下
在当前用户的SHELL环境配置文件中增加acme.sh=~/.acme.sh/acme.sh- 添加一项crontab定时任务
- 并运行下面的命令添加相应环境变量
cd ~/.acme.sh
export CF_Email="example.com"
export CF_Key="GLOBAL API KEY"
申请证书
注册 email ,更换成自己的邮箱./acme.sh --register-account -m admin@example.com
继续输入下面的命令来生成证书,记得把example.com改成自己的域名
./acme.sh --issue --dns dns_cf -d example.com -w /etc/acme
正常情况下会提示签名成功,并打印当前的证书
如果当前系统用户没有-w参数指定的webroot目录的写入权限,将导致acme.sh无法创建域名验证文件。
自动部署
自动把证书部署于WEB服务
Httpd
~/.acme.sh/acme.sh --installcert -d example.com \
--keypath /etc/uhttpd.key \
--fullchainpath /etc/uhttpd.crt \
--reloadcmd "/etc/init.d/uhttpd restart"
Nginx
acme.sh --install-cert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "service nginx force-reload"
自动更新
通过crontab -l命令查看证书更新任务计划:
其他指令
卸载 ./acme.sh --uninstall
查看生成的证书 ./acme.sh --list
手动更新 ./acme.sh --upgrade
评论 (2)