# 使用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
```

> 注意:如果在生成证书中发现这种错误,就直接在命令后面添加--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

如果安装出现错误,错误的原因是因为没有注册**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

这是因为你的域名和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
```