Openwrt/Linux 启用Https,申请Lets Encrypt证书
标签搜索

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

艾塔
2023-04-15 / 2 评论 / 301 阅读 / 正在检测是否收录...

背景

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


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

1

评论 (2)

取消
  1. 头像
    dululux
    Windows 10 · Google Chrome

    画图

    回复
    1. 头像
      年年有鱼 作者
      Windows 10 · Google Chrome
      @ dululux

      画图

      回复