Skip to main content

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官网并注册账号] --> B[创建新证书并填写域名]
    B --> C[选择90天免费证书]
    C --> D[选择验证方式]
    D --> D1[DNS验证]
    D --> D2[HTTP文件验证]
    D --> D3[邮箱验证]
    D1 --> E[完成域名所有权验证]
    D2 --> E
    D3 --> E
    E --> F[下载证书文件]
    F --> 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 >> /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官网并注册账号] --> B[创建新证书并填写域名]
    B --> C[选择90天免费证书]
    C --> D[选择验证方式]
    D --> D1[DNS验证]
    D --> D2[HTTP文件验证]
    D --> D3[邮箱验证]
    D1 --> E[完成域名所有权验证]
    D2 --> E
    D3 --> E
    E --> F[下载证书文件]
    F --> 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 >> /etc/ssl/your_domain_name/zerossl_combined.crt'
    sudo bash -c 'cat /data/ssl_lesrec/certificate.crt /data/ssl_lesrec/ca_bundle.crt >> /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官方文档或帮助中心。