Acme.sh源码安装及简单应用

时间:2024-6-5    作者:冰城心无泪    分类: Linux应用


Acme.sh的作用是免费SSL证书申请并自动续期,主要是免费,这对于自建网站的兄弟来说,绝对是个福音。

网上也有很多教程教大家去安装和使用,只不过在安装的时候,大多数教程都是用命令去git上面拉取脚本执行安装,这对于无法访问git的兄弟来说,这会是一个很麻烦的事情,当然也有国内的备用地址,只是我在安装的时候,时常也会安装失败,当然多试几次也会成功,就很烦,尤其是在比较忙的时候。

所以我就在想,将源码下载下来安装使用,这样就避免了因网络原因导致安装失败。

下面附上acme.sh源码包的下载地址,版本是 V3.0.8 下载与git的日期为2024年06月04日:点击下载acme.sh

下面开始介绍安装过程

1、服务器系统为Centos7-2009,在系统内创建文件存放目录 /Tools,这个不是必须的,主要是为了方便管理文件,这只是我自己的习惯,各位可根据自己的习惯去选择或者创建。

mkdir /Tools

2、使用ssh工具如Nxshell、WindTerm、Xshell等将下载到的acme.sh源码包传输到选择的文件存放目录,这个过程就略过了,

3、安装依赖

yum -y install wget unzip vim socat

4、acme.sh源码压安装

进入安装目录

cd /Tools

解压acme.sh源码包

unzip acme.sh-master.zip

进入已解压出来的acme.sh目录

cd acme.sh-master

执行安装,后面这个邮件地址改成你自己的。

./acme.sh --install -m my@example.com

5、使acme.sh保持自动更新

/root/.acme.sh/acme.sh --upgrade --auto-upgrade

6、这样就安装好了,默认的安装目录为用户的主目录,我这是root用户所以是在 /root/.acme.sh 这时候直接使用命令acme.sh是无法使用的,因为变量没生效

7、下面就是想办法让变量生效,总不能使用绝对路径来用吧(/root/.acme.sh/acme.sh),重新打开终端或者重启服务器都可以实现,但是我嫌烦。

方法一
alias acme.sh=~/.acme.sh/acme.sh
方法二
source ~/.bashrc

下面开始介绍怎么使用

前置条件:

首先,你要有自己的域名

其次,你要有一个外网IP

最后,你要可以登录DNS服务商添加解析记录

如果前置条件不满足,下面的就不用看了。

1、要在服务器上创建一个放置证书的目录

创建证书目录
mkdir -p /Nginx/SSL

2、打开Freessl官网 https://freessl.cn/user/login ,创建账号并登录

3、点击证书自动化-域名授权-添加域名,选择验证类型


cname:别名记录,也就是DNS验证方式,需要在你的域名解析上面添加上一条cname记录值,这个值会在你点击下一步后生成
文件代理验证:需要在你的网站根目录下放置一个文件,来验证你的域名所有权,完成验证后就可以生成证书,这个验证文件是由acme.sh生成,也就是说你必须对网站的根目录具有写权限。

4、输入域名后,点击下一步,这里仅介绍cname验证方式

这里会生成你需要添加的记录值,将主机记录和记录值复制下来
建议这个页面不要关掉,等你在DNS上添加完cname记录值后,还得在这验证呢。
当然,关掉了也没事,重新打开就好,如果你不嫌烦的话。


在你的域名解析上添加已生成的记录值(我用的是腾讯的域名解析)

添加完后,就要回到刚才的页面,点下面的检测按钮。
这里要注意的是,DNS那里填写完cname记录后,不是立马生效的,快则几分钟,慢则个吧小时,看你运气。

5、签发证书

当你验证完成后,会出现部署的窗口,这里需要你复制 acme.sh 部署命令,到你的服务器上执行。


等待执行成功后,acme.sh就把证书签发到服务器上了,这个时候证书不要直接用,用acme.sh命令来部署证书到上面创建的证书存放目录。
这样做的目的是,acme.sh会记录你的操作,在证书即将到期前自动帮你申请证书,也是自动的将新签发的证书部署到上次的目录。
哪怕你后面是手动的更新证书,acme.sh也会将新签发的证书自动部署到已记录的目录。

6、部署证书

部署命令如下,证书的后缀无所谓,注意证书部署路径,只要你在配置Nginx的时候不要配错就行:
/root/.acme.sh/acme.sh --install-cert -d 你的域名 \
--key-file /Nginx/SSL/你的域名.key \
--fullchain-file /Nginx/SSL/你的域名.crt \
--reloadcmd     "service nginx force-reload"

7、至此,证书就部署到服务器上面了,剩下的就是配置Nginx了

若还未安装Nginx,那就看下CentOS7&8编译安装Nginx

已安装Nginx,不会配置,那就看下Nginx只允许域名访问网站

8、acme.sh常用操作

acme.sh 依赖于cron执行定时任务来完成证书自动更新的,查看acme.sh的定时任务
crontab -l

强制更新证书
"/root/.acme.sh"/acme.sh --renew -d 你的域名 --force