# ZeroSSL 申请免费SSL证书的方法

ZeroSSL 是一家提供免费SSL证书的服务商，其免费证书有效期为90天，适合个人博客、小型网站或测试环境使用。下面是在ZeroSSL官网申请免费SSL证书的步骤。

\### 📌 ZeroSSL 免费SSL证书主要特点  
在开始申请之前，我们先通过一个表格快速了解 ZeroSSL 免费证书的主要特点：

| 特性 | 说明 |  
| :----------- | :----------------------------------------- |  
| \*\*证书类型\*\* | 单域名、多域名、通配符（泛域名）、IP证书 |  
| \*\*有效期\*\* | 90天 |  
| \*\*续期\*\* | 支持免费续期，可手动或通过ACME自动化 |  
| \*\*验证方式\*\* | DNS解析、HTTP文件上传、邮箱验证 |  
| \*\*自动续期\*\* | 通过ACME工具（如acme.sh）支持 |

\### 📝 在ZeroSSL官网申请免费SSL证书  
如果你想通过ZeroSSL官网申请，主要步骤如下图所示：

```mermaid  
flowchart TD  
 A\[访问ZeroSSL官网并注册账号\] --&gt; B\[创建新证书并填写域名\]  
 B --&gt; C\[选择90天免费证书\]  
 C --&gt; D\[选择验证方式\]  
 D --&gt; D1\[DNS验证\]  
 D --&gt; D2\[HTTP文件验证\]  
 D --&gt; D3\[邮箱验证\]  
 D1 --&gt; E\[完成域名所有权验证\]  
 D2 --&gt; E  
 D3 --&gt; E  
 E --&gt; F\[下载证书文件\]  
 F --&gt; G\[在服务器上安装证书\]  
```

下面是各环节的具体操作说明：

1\. \*\*注册ZeroSSL账号\*\*：  
 \* 访问 ZeroSSL 官网 (\[https://zerossl.com\](https://zerossl.com))。  
 \* 点击“Get Free SSL”或“Sign Up”注册新账号，通常需要使用邮箱进行注册。

2\. \*\*创建新证书\*\*：  
 \* 登录后，在控制面板点击“\*\*New Certificate\*\*”。  
 \* 输入你需要申请证书的\*\*域名\*\*。如果你想为纯IP地址申请SSL证书，也可以在此输入IP地址。

3\. \*\*选择证书类型\*\*：  
 \* 在证书类型页面，选择“\*\*90-Day Certificate\*\*”（90天证书），这是免费的选项。

4\. \*\*生成CSR（证书签名请求）\*\*：  
 \* 通常可以选择“\*\*Auto-Generate CSR\*\*”（自动生成CSR），让ZeroSSL为你处理。CSR包含了你的域名和组织信息（如所在地和国家）。

5\. \*\*选择验证方式\*\*：  
 \* 验证域名所有权是必须的步骤。ZeroSSL主要提供三种方式：  
 \* \*\*HTTP文件上传验证\*\*：下载验证文件并上传到服务器指定目录，确保可通过HTTP访问。  
 \* \*\*DNS解析验证\*\*：在域名DNS管理后台添加指定的TXT或CNAME记录。  
 \* \*\*邮箱验证\*\*：选择域名管理员邮箱（如admin@, webmaster@等），接收验证邮件并点击链接或输入验证码完成验证。这是比较快速和简单的方法。

6\. \*\*完成验证并下载证书\*\*：  
 \* 验证通过后，状态会更新。点击“\*\*Install Certificate\*\*”即可下载证书文件。  
 \* 证书通常以ZIP格式提供，包含以下文件：  
 \* `certificate.crt`：域名证书  
 \* `ca\_bundle.crt`：中间证书链  
 \* `private.key`：私钥（请务必安全保管）

\### ⚙️ 在服务器上安装证书  
下载证书后，需要将其安装到你的Web服务器上。以Nginx为例：

1\. \*\*上传证书文件\*\*：将下载的证书文件（`certificate.crt`、`ca\_bundle.crt` 和 `private.key`）上传到服务器上的一个目录，例如 `/etc/ssl/your\_domain\_name/`。  
2\. \*\*合并证书文件（针对Nginx）\*\*：Nginx需要将 `certificate.crt` 和 `ca\_bundle.crt` 合并为一个文件（例如 `zerossl\_combined.crt`或`fullchain.pem`）：  
 ```bash  
 sudo bash -c 'cat /etc/ssl/your\_domain\_name/certificate.crt /etc/ssl/your\_domain\_name/ca\_bundle.crt &gt;&gt; /etc/ssl/your\_domain\_name/zerossl\_combined.crt'  
 ```  
3\. \*\*配置Nginx\*\*：编辑Nginx的虚拟主机配置文件（通常在 `/etc/nginx/sites-available/` 或类似路径），修改SSL相关配置指向你的证书和私钥：  
 ```nginx  
 server {  
 listen 443 ssl;  
 server\_name your\_domain.com www.your\_domain.com;

 ssl\_certificate /etc/ssl/your\_domain\_name/zerossl\_combined.crt;  
 ssl\_certificate\_key /etc/ssl/your\_domain\_name/private.key;

 # 其他配置...  
 }  
 ```  
 同时，建议配置HTTP到HTTPS的重定向：  
 ```nginx  
 server {  
 listen 80;  
 server\_name your\_domain.com www.your\_domain.com;  
 return 301 https://$server\_name$request\_uri;  
 }  
 ```  
4\. \*\*重启Nginx\*\*：检查配置是否正确并重启Nginx使更改生效：  
 ```bash  
 sudo nginx -t # 测试配置  
 sudo systemctl restart nginx # 重启Nginx  
 ```

\### 🔄 证书续期与管理  
ZeroSSL的免费证书有效期为90天，到期前需要续期。

\* \*\*手动续期\*\*：你可以登录ZeroSSL账户，在证书到期前（ZeroSSL会在到期前14天发邮件提醒你）重新进行验证和下载安装。  
\* \*\*自动续期（推荐）\*\*：使用支持ACME协议的工具（如\*\*acme.sh\*\*）可以自动化续期过程。  
 \* \*\*安装acme.sh\*\*：  
 ```bash  
 curl https://get.acme.sh | sh  
 source ~/.bashrc  
 ```  
 \* \*\*设置ZeroSSL为默认CA\*\*并配置EAB凭证（在ZeroSSL控制面板生成）：  
 ```bash  
 acme.sh --set-default-ca --server zerossl  
 export ZERO\_EAB\_KEY="你的\_eab\_key"  
 export ZERO\_EAB\_HMAC="你的\_eab\_hmac"  
 ```  
 \* \*\*颁发证书\*\*（例如使用DNS API自动验证）：  
 ```bash  
 export DP\_Id="你的\_DNS\_API\_ID"  
 export DP\_Key="你的\_DNS\_API\_Key"  
 acme.sh --issue --dns dns\_dp -d your\_domain.com -d \*.your\_domain.com  
 ```  
 \* \*\*安装证书\*\*并配置自动重载Web服务器：  
 ```bash  
 acme.sh --install-cert -d your\_domain.com \\  
\--key-file /etc/ssl/your\_domain.com/private.key \\  
\--fullchain-file /etc/ssl/your\_domain.com/fullchain.cer \\  
\--reloadcmd "systemctl reload nginx"  
 ```  
 acme.sh会自动添加cron任务每天检查证书是否需续期。

\### 💎 主要注意事项  
\* \*\*免费证书限制\*\*：ZeroSSL的免费计划每个账户通常有\*\*3个免费证书的限制\*\*。  
\* \*\*验证方式选择\*\*：  
 \* \*\*DNS验证\*\*：适合无法直接操作服务器但能管理DNS记录的情况，也是自动化（如acme.sh）的首选。  
 \* \*\*HTTP验证\*\*：需要能操作Web服务器目录，上传验证文件。  
 \* \*\*邮箱验证\*\*：相对简单，但需确保能收到指定管理员邮箱的邮件。  
\* \*\*私钥安全\*\*：私钥（`.key`文件）务必保密，切勿泄露。  
\* \*\*证书链\*\*：配置Web服务器时，确保使用合并后的完整证书链（如Nginx的`zerossl\_combined.crt`），否则可能导致某些浏览器不信任。  
\* \*\*IP证书\*\*：ZeroSSL支持为纯IP地址申请SSL证书，这比较少见，验证时通常需选择HTTP文件上传方式。

希望这些详细的步骤能帮助你成功申请和安装ZeroSSL的免费SSL证书。如果你在过程中遇到任何问题，可以查阅ZeroSSL官方文档或帮助中心。

ZeroSSL 是一家提供免费SSL证书的服务商，其免费证书有效期为90天，适合个人博客、小型网站或测试环境使用。下面是在ZeroSSL官网申请免费SSL证书的步骤。

\### 📌 ZeroSSL 免费SSL证书主要特点  
在开始申请之前，我们先通过一个表格快速了解 ZeroSSL 免费证书的主要特点：

| 特性 | 说明 |  
| :----------- | :----------------------------------------- |  
| \*\*证书类型\*\* | 单域名、多域名、通配符（泛域名）、IP证书 |  
| \*\*有效期\*\* | 90天 |  
| \*\*续期\*\* | 支持免费续期，可手动或通过ACME自动化 |  
| \*\*验证方式\*\* | DNS解析、HTTP文件上传、邮箱验证 |  
| \*\*自动续期\*\* | 通过ACME工具（如acme.sh）支持 |

\### 📝 在ZeroSSL官网申请免费SSL证书  
如果你想通过ZeroSSL官网申请，主要步骤如下图所示：

```mermaid  
flowchart TD  
 A\[访问ZeroSSL官网并注册账号\] --&gt; B\[创建新证书并填写域名\]  
 B --&gt; C\[选择90天免费证书\]  
 C --&gt; D\[选择验证方式\]  
 D --&gt; D1\[DNS验证\]  
 D --&gt; D2\[HTTP文件验证\]  
 D --&gt; D3\[邮箱验证\]  
 D1 --&gt; E\[完成域名所有权验证\]  
 D2 --&gt; E  
 D3 --&gt; E  
 E --&gt; F\[下载证书文件\]  
 F --&gt; G\[在服务器上安装证书\]  
```

下面是各环节的具体操作说明：

1\. \*\*注册ZeroSSL账号\*\*：  
 \* 访问 ZeroSSL 官网 (\[https://zerossl.com\](https://zerossl.com))。  
 \* 点击“Get Free SSL”或“Sign Up”注册新账号，通常需要使用邮箱进行注册。

2\. \*\*创建新证书\*\*：  
 \* 登录后，在控制面板点击“\*\*New Certificate\*\*”。  
 \* 输入你需要申请证书的\*\*域名\*\*。如果你想为纯IP地址申请SSL证书，也可以在此输入IP地址。

3\. \*\*选择证书类型\*\*：  
 \* 在证书类型页面，选择“\*\*90-Day Certificate\*\*”（90天证书），这是免费的选项。

4\. \*\*生成CSR（证书签名请求）\*\*：  
 \* 通常可以选择“\*\*Auto-Generate CSR\*\*”（自动生成CSR），让ZeroSSL为你处理。CSR包含了你的域名和组织信息（如所在地和国家）。

5\. \*\*选择验证方式\*\*：  
 \* 验证域名所有权是必须的步骤。ZeroSSL主要提供三种方式：  
 \* \*\*HTTP文件上传验证\*\*：下载验证文件并上传到服务器指定目录，确保可通过HTTP访问。  
 \* \*\*DNS解析验证\*\*：在域名DNS管理后台添加指定的TXT或CNAME记录。  
 \* \*\*邮箱验证\*\*：选择域名管理员邮箱（如admin@, webmaster@等），接收验证邮件并点击链接或输入验证码完成验证。这是比较快速和简单的方法。

6\. \*\*完成验证并下载证书\*\*：  
 \* 验证通过后，状态会更新。点击“\*\*Install Certificate\*\*”即可下载证书文件。  
 \* 证书通常以ZIP格式提供，包含以下文件：  
 \* `certificate.crt`：域名证书  
 \* `ca\_bundle.crt`：中间证书链  
 \* `private.key`：私钥（请务必安全保管）

\### ⚙️ 在服务器上安装证书  
下载证书后，需要将其安装到你的Web服务器上。以Nginx为例：

1\. \*\*上传证书文件\*\*：将下载的证书文件（`certificate.crt`、`ca\_bundle.crt` 和 `private.key`）上传到服务器上的一个目录，例如 `/etc/ssl/your\_domain\_name/`。  
2\. \*\*合并证书文件（针对Nginx）\*\*：Nginx需要将 `certificate.crt` 和 `ca\_bundle.crt` 合并为一个文件（例如 `zerossl\_combined.crt`或`fullchain.pem`）：  
 ```bash  
 sudo bash -c 'cat /etc/ssl/your\_domain\_name/certificate.crt /etc/ssl/your\_domain\_name/ca\_bundle.crt &gt;&gt; /etc/ssl/your\_domain\_name/zerossl\_combined.crt'  
 sudo bash -c 'cat /data/ssl\_lesrec/certificate.crt /data/ssl\_lesrec/ca\_bundle.crt &gt;&gt; /data/ssl\_lesrec/bbs.lesrec.cn.pem'  
实测不能合并，会导致pem与key文件md5不同，只要把certificate.crt拷贝为bbs.lesrec.cn.pem即可  
验证方法：  
openssl rsa -noout -modulus -in /data/ssl\_lesrec/bbs.lesrec.cn.key | openssl md5  
openssl x509 -noout -modulus -in /data/ssl\_lesrec/bbs.lesrec.cn.pem | openssl md5  
 ```  
3\. \*\*配置Nginx\*\*：编辑Nginx的虚拟主机配置文件（通常在 `/etc/nginx/sites-available/` 或类似路径），修改SSL相关配置指向你的证书和私钥：  
 ```nginx  
 server {  
 listen 443 ssl;  
 server\_name your\_domain.com www.your\_domain.com;

 ssl\_certificate /etc/ssl/your\_domain\_name/zerossl\_combined.crt;  
 ssl\_certificate\_key /etc/ssl/your\_domain\_name/private.key;

 # 其他配置...  
 }  
 ```  
 同时，建议配置HTTP到HTTPS的重定向：  
 ```nginx  
 server {  
 listen 80;  
 server\_name your\_domain.com www.your\_domain.com;  
 return 301 https://$server\_name$request\_uri;  
 }  
 ```  
4\. \*\*重启Nginx\*\*：检查配置是否正确并重启Nginx使更改生效：  
 ```bash  
 sudo nginx -t # 测试配置  
 sudo systemctl restart nginx # 重启Nginx  
 ```

\### 🔄 证书续期与管理  
ZeroSSL的免费证书有效期为90天，到期前需要续期。

\* \*\*手动续期\*\*：你可以登录ZeroSSL账户，在证书到期前（ZeroSSL会在到期前14天发邮件提醒你）重新进行验证和下载安装。  
\* \*\*自动续期（推荐）\*\*：使用支持ACME协议的工具（如\*\*acme.sh\*\*）可以自动化续期过程。  
 \* \*\*安装acme.sh\*\*：  
 ```bash  
 curl https://get.acme.sh | sh  
 source ~/.bashrc  
 ```  
 \* \*\*设置ZeroSSL为默认CA\*\*并配置EAB凭证（在ZeroSSL控制面板生成）：  
 ```bash  
 acme.sh --set-default-ca --server zerossl  
 export ZERO\_EAB\_KEY="你的\_eab\_key"  
 export ZERO\_EAB\_HMAC="你的\_eab\_hmac"  
 ```  
 \* \*\*颁发证书\*\*（例如使用DNS API自动验证）：  
 ```bash  
 export DP\_Id="你的\_DNS\_API\_ID"  
 export DP\_Key="你的\_DNS\_API\_Key"  
 acme.sh --issue --dns dns\_dp -d your\_domain.com -d \*.your\_domain.com  
 ```  
 \* \*\*安装证书\*\*并配置自动重载Web服务器：  
 ```bash  
 acme.sh --install-cert -d your\_domain.com \\  
\--key-file /etc/ssl/your\_domain.com/private.key \\  
\--fullchain-file /etc/ssl/your\_domain.com/fullchain.cer \\  
\--reloadcmd "systemctl reload nginx"  
 ```  
 acme.sh会自动添加cron任务每天检查证书是否需续期。

\### 💎 主要注意事项  
\* \*\*免费证书限制\*\*：ZeroSSL的免费计划每个账户通常有\*\*3个免费证书的限制\*\*。  
\* \*\*验证方式选择\*\*：  
 \* \*\*DNS验证\*\*：适合无法直接操作服务器但能管理DNS记录的情况，也是自动化（如acme.sh）的首选。  
 \* \*\*HTTP验证\*\*：需要能操作Web服务器目录，上传验证文件。  
 \* \*\*邮箱验证\*\*：相对简单，但需确保能收到指定管理员邮箱的邮件。  
\* \*\*私钥安全\*\*：私钥（`.key`文件）务必保密，切勿泄露。  
\* \*\*证书链\*\*：配置Web服务器时，确保使用合并后的完整证书链（如Nginx的`zerossl\_combined.crt`），否则可能导致某些浏览器不信任。  
\* \*\*IP证书\*\*：ZeroSSL支持为纯IP地址申请SSL证书，这比较少见，验证时通常需选择HTTP文件上传方式。

希望这些详细的步骤能帮助你成功申请和安装ZeroSSL的免费SSL证书。如果你在过程中遇到任何问题，可以查阅ZeroSSL官方文档或帮助中心。