# 使用acme.sh免费获取https证书 **Repository Path**: jayem/acme.sh-https ## Basic Information - **Project Name**: 使用acme.sh免费获取https证书 - **Description**: 如何使用acme.sh免费获取https证书 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-10-18 - **Last Updated**: 2025-10-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 如何获取免费https证书 步骤如下: 1) 安装acme工具 2) 生成证书,一般有两种,单域名证书和泛域名证书 3) 复制证书到 nginx/apache 或者其他服务 4) 更新证书 5) 更新 acme.sh 6) 如何使用/配置 以下以Debian 11下为例,配合nginx,展示获取免费证书的步骤 ## 一、安装acme工具 第一种: ``` curl https://get.acme.sh ``` > 注意1:如果下载比较慢的话,可以使用git下载到本地之后,在复制到服务器进行安装(安装时需要把地址改为路径)或可从如下仓库中克隆到本地再安装https://gitee.com/myhfw003/acme.sh > 注意2:如果你不想那么麻烦的话,可以直接在安装acme工具的时候直接填写邮箱。 > 命令如下: ``` ## 注意mysaihong@gmail.com 是你的个人邮箱,记得替换 curl https://get.acme.sh | sh -s email=mysaihong@gmail.com ``` > 注意3:如果有错误,请看第七点的常见问题 ## 二、生成证书 证书有两种分别是单域名证书和泛域名证书,由于比较经常使用泛域名,所以在这里只写到泛域名的生成证书。 这里以阿里云的域名为例。 > 注意:在生成证书之前,首先要新建文件夹,用来存储证书 ``` mkdir /etc/nginx/ssl/ ``` ### 生成泛域名证书 1、需要现在阿里云生成RAM子账号,给予域名相关完整权限,并生成对应的key和scret。 2、设置环境变量,执行如下命令 ``` export Ali_Key="XXXXXXXXX" export Ali_Secret="XXXXXXXXXXXXX" ``` 3、生成证书,命令如下: ``` acme.sh --issue --dns dns_ali -d *.feisai.site ``` ![mazchvjH.png](https://img1.imgtp.com/2023/02/17/mazchvjH.png) > 注意:如果在生成证书中发现这种错误,就直接在命令后面添加--force ``` acme.sh --issue --dns dns_ali -d *.feisai.site --force ``` > 注意:生成的证书位于当前用户家目录下.acme.sh目录中 ## 三、复制证书到指定路径 就是说,要把证书复制到在第二步创建的文件夹当中。 复制命令如下: ``` ## 注意 *.feisai,site 要更换为你自己的域名 acme.sh --install-cert -d *.feisai.site --key-file /etc/nginx/ssl/key.pem --fullchain-file /etc/nginx/ssl/fullchain.pem --reloadcmd "systemctl force-reload nginx" ``` > 注意1:如上命令的目录请自行确保路径正确,如有需要可自行创建目录,此路径可以自行规定 > 注意2:复制证书的命令只需要执行这一次,后面自动更新证书后,会自动执行此命令 ## 四、更新证书 证书的有效期是90天,但是证书会在60天以后自动更新,你不需要做任何操作(不保证以后时间不会缩短) ## 五、更新acme.sh 命令如下: ``` acme.sh --upgrade ``` 如果你想偷懒的话,就可以让他自动更新,命令如下: ``` acme.sh --upgrade --auto-upgrade ``` ## 六、如何使用/配置 以下是一个极简的配置示例,但暂时来说完全够用了。 以下配置信息,是在nginx的配置文件里,一般来说路径为/etc/nginx/conf.d/ ``` server{ # 输入普通地址时,跳转到https地址 listen 80; server_name www.feisai.site; return 301 https://www.feisai.site$request_uri; } server{ listen 443 ssl; #监听的端口 server_name www.feisai.site; #监听的域名 ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; location / { root /var/www/www.feisai.site; #网站所在路径 index index.html; #默认的首页文件 } } ``` 配置完成后,重启nginx ``` nginx -s reload ``` ## 七、常见的问题 以下是申请过程-常见错误说明:(未出现错误,跳过此段) **问题一:**acme.sh --register-account -m my@example.com “证书申请”过程中,出现如下错误: acme.sh --register-account -m my@example.com ![TkZK6VsF.png](https://img1.imgtp.com/2023/02/17/TkZK6VsF.png) 如果安装出现错误,错误的原因是因为没有注册**acme**账号,需要执行脚本进行申请。 解决办法: ``` ## 注意mysaihong@gmail.com 是你的个人邮箱,记得替换 acme.sh --register-account -m mysaihong@gmail.com --server zerossl ``` 成功。然后在次执行证书申请代码。 **问题二:**Adding txt value...... “证书申请”过程中出现如下错误: Adding txt value: W9IRKarSz7S1RKS8goMFDOK1dGDEjP4PLGuxNjXIUY4 for domain: _acme-challenge.abc.com ![ACBNe4my.png](https://img1.imgtp.com/2023/02/17/ACBNe4my.png) 这是因为你的域名和DNS密钥不在一个服务商 解决办法: 重新执行part1,去你域名指定的服务商去查看,拿到后,再次执行下面代码 ``` ##注:此处的APPID 和APPkey为第一步我们从阿里云RAM中获取的 export Ali_Key="Key_XXX" export Ali_Secret="Secret_XXX" ``` 同时进入/root/.acme.sh目录,修改Ali_Key和ALI_Secret ``` ##需要进入acme.sh文件夹 vi account.conf ``` 修改完记得wq保存。然后再次执行证书申请代码。 **问题三:**nginx 出现. env: /etc/init.d/redis: Permission denied 解决办法:[env: /etc/init.d/redis: Permission denied_极客on之路-CSDN博客](https://blog.csdn.net/u014756827/article/details/52038240) 问题四: Failed to reload-or-try-restart nginx.service: Unit not found 解决办法:[ 添加 Nginx 为系统服务(service nginx start/stop/force-reload)_weixin_34279579的博客-CSDN博客](https://blog.csdn.net/weixin_34279579/article/details/88906469?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163246571816780271571092%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163246571816780271571092&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-88906469.pc_search_ecpm_flag&utm_term=nginx+force-reload&spm=1018.2226.3001.4187) 问题五:中间证书缺少,浏览器可以正常访问,接口PKI bulid faild,小程序电脑可以打开,手机打不开等等... 报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilder. 报错:微信小程序服务端-电脑端可以访问,手机不能访问 检测: 检测SSL证书是否出现错误:中间证书缺少 检测地址:[SSL服务器证书安装检查器_OPENSSL工具包_迅通诚信](https://www.myssl.cn/tools/check-server-cert.html) 解决办法:(nginx) ``` ssl_certificate /data/cert/abc.com/fullchain.crt; ssl_certificate_key /data/cert/abc.com/abc.com.key; ssl_trusted_certificate /data/cert/abc.com/fullchain.crt; ``` 注意:这里ssl_certificate 配置由原本的abc.com.crt 变成fullchain.crt了,同时配置ssl_trusted_certificate 信任证书 重启nginx ``` nginx -s reload ```