Openwrt/Linux 启用Https,申请Lets Encrypt证书

Openwrt/Linux 启用Https,申请Lets Encrypt证书

艾塔
2年前发布

图片[1] - Openwrt/Linux 启用Https,申请Lets Encrypt证书 - 至高岭

背景

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

图片[2] - Openwrt/Linux 启用Https,申请Lets Encrypt证书 - 至高岭

安装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

正常情况下会提示签名成功,并打印当前的证书
图片[3] - Openwrt/Linux 启用Https,申请Lets Encrypt证书 - 至高岭

如果当前系统用户没有-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命令查看证书更新任务计划:
图片[4] - Openwrt/Linux 启用Https,申请Lets Encrypt证书 - 至高岭

其他指令

卸载 ./acme.sh --uninstall
查看生成的证书 ./acme.sh --list
手动更新 ./acme.sh --upgrade


其他参考
acme.sh简单教程
使用ACME部署HTTPS证书

© 版权声明
THE END
喜欢就支持一下吧
点赞 1 分享 收藏
评论 共2条
OωO
取消
  1. 头像
    dululux
     · 
    回复

    画图

    1. 头像
      年年有鱼 作者
       · 
      回复

      @dululux

      画图

SSL