# 如何获取免费https证书 **Repository Path**: weilijiang/howto-get-free-cert ## Basic Information - **Project Name**: 如何获取免费https证书 - **Description**: 如何获取免费的证书:单域名和泛域名 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 11 - **Created**: 2024-07-20 - **Last Updated**: 2024-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 如何获取免费https证书 步骤如下: 1. 安装acme工具 2. 生成证书,一般有两种,单域名证书和泛域名证书 3. 复制证书到 nginx/apache 或者其他服务 4. 更新证书 5. 更新 acme.sh 6. 出错怎么办, 如何调试 7. 如何使用/配置 以下以Debian 11下为例,配合nginx,展示获取免费证书的步骤 ## 一、安装acme工具 安装命令如下: ```zsh curl https://get.acme.sh | sh -s email=myhfw003@outlook.com ``` > 说明1:acme安装在当前用户家目录下的.acme.sh目录中 > 说明2:最后的邮箱,请记得换成自己的有效电子邮箱 > 说明3:如果你想acme.sh在任意路径可用,可以设置一个别名,在环境变量文件`.bashrc`中放入如下命令:`alias acme.sh=~/.acme.sh/acme.sh`,并执行`source ~/.bashrc`即可 > 说明4:可能因为网络问题无法安装成功,参考如下操作: ```bash git clone https://gitee.com/neilpang/acme.sh.git cd acme.sh ./acme.sh --install -m my@example.com ``` ## 二、生成证书 1. 生成单域名证书 生成命令如下: ```zsh acme.sh --issue -d 9ihub.com --webroot /var/www/9ihub.com ``` 如果你是nginx作为web服务器或者反向代理,则可以简单的使用如下命令: ```zsh acme.sh --issue -d 9ihub.com --nginx ``` > 说明:以上都要求先部署好对应的网站 2. 生成泛域名证书(以阿里云的域名为例) 1. 需要先在阿里去生成RAM子账号,给予域名解析相关完整权限(AliyunDNSFullAccess),并生成对应的key和scret,具体请自行查找资料 2. 设置环境变量,执行如下命令 ```zsh export Ali_Key="XXXXXXXX" export Ali_Secret="XXXXXXXXXXXXXXX" ``` 3. 生成证书,命令如下: ```zsh #以下命令申请了根域名证书和三级泛域名证书 acme.sh --issue --dns dns_ali -d 9ihub.com -d *.9ihub.com ``` 如下图所示: ![20221004203345](https://oss.9ihub.com/test/20221004203345.png) > 说明1:生成的证书位于当前用户家目录下.acme.sh目录中 > 说明2:生成的证书的路径不能保证完全正确,所以不要直接使用生成的证书,应该完成如下步骤`三、复制证书到指定路径` ## 三、复制证书到指定路径 复制命令如下: ```zsh acme.sh --install-cert -d *.9ihub.com --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 命令如下: ```zsh acme.sh --upgrade ``` 如果想偷懒,可以让其自动更新,命令如下: ```zsh acme.sh --upgrade --auto-upgrade ``` ## 六、出错怎么办, 如何调试 如果出错了,请使用如下语句调试 ```zsh acme.sh --issue ..... --debug ``` ## 七、如何使用/配置 以下是一个极简的配置示例,但暂时来说完全够用了,祝玩的愉快: ```zsh server{ # 输入普通地址时,跳转到https地址 listen 80; server_name test.9ihub.com; return 301 https://test.9ihub.com$request_uri; } server{ listen 443 ssl; #监听的端口 server_name test.9ihub.com; #监听的域名 ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; location / { root /var/www/test.9ihub.com; #网站所在路径 index index.html; #默认的首页文件 } } ```