hankhu
带你看世界

Linux命令行下使用acme.sh申请配置免费证书

1. 安装 acme.sh

curl https://get.acme.sh | sh

2. 安装后的配置

acme.sh 安装到根目录下: ~/.acme.sh/ 并创建 一个 bash 的 alias, 方便后续使用

alias acme.sh=~/.acme.sh/acme.sh
echo 'alias acme.sh=~/.acme.sh/acme.sh' >>/etc/profile

3. 创建 cronjob, 每天 0:00 点自动检测证书, 如果快过期了, 需要更新, 则会自动更新证书(可执行 crontab -l 查看)

00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs

4. 证书的生成

acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/

只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.

如果你用的 apache服务器, acme.sh 还可以智能的从 apache的配置中自动完成验证, 你不需要指定网站根目录:

acme.sh --issue  -d mydomain.com   --apache

如果你用的 nginx服务器, 或者反代, acme.sh 还可以智能的从 nginx的配置中自动完成验证, 你不需要指定网站根目录:

acme.sh --issue  -d mydomain.com   --nginx

如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口, 完成验证:

acme.sh  --issue -d mydomain.com   --standalone

我试过好像没用,不过可以使用下面dns方法

https://github.com/acmesh-official/acme.sh/wiki/dnsapi

笔记下我cf的方法

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"
acme.sh --issue --dns dns_cf -d example.com -d www.example.com

5. 证书的安装

使用下面的安装方式,证书将每60天更新一次

使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到此位置!!

具体看示例(示例域名: XXXX.com

  • 先创建用于存放证书的文件夹
mkdir -p /etc/nginx/ssl_cert/XXXX.com
  • 安装证书
acme.sh --install-cert -d XXXX.com \
--key-file /etc/nginx/ssl_cert/XXXX.com/XXXX.com.key \
--fullchain-file /etc/nginx/ssl_cert/XXXX.com/XXXX.com.cer \
--reloadcmd  "service nginx force-reload"

执行成功后,终端最终显示:Reload success

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

1 2
转载请注明出处:hankhu » Linux命令行下使用acme.sh申请配置免费证书
分享到: 生成海报
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活