Path: 宝塔面板 API 参考 › SSL 证书

`POST /ssl`

这个请求地址通过 action 区分具体功能。下方列出每个 action 的参数、约束和调用示例。

## Request body

_Required._

One of:

- `GetCertList`
- `GetSSLProduct`
- `GetSiteDomain`
- `GetUserInfo`
- `SetCertToSite (SSL)`
- `get_cert_info`
- `get_cert_list`
- `get_order_find`
- `get_order_list`
- `get_product_list`
- `get_ssl_ps`
- `set_cert`
- `set_ssl_ps`

## Example request

```text
{
  "request_time": "string",
  "request_token": "string",
  "action": "GetCertList"
}
```

## Code samples

### cURL（填写面板地址与签名）

```curl
curl --request POST \
  --url "https://your-panel.example.com:8888/ssl" \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "request_time=<Unix时间戳>" \
  --data-urlencode "request_token=<按 API 概览生成的签名>" \
  --data-urlencode "action=GetCertList"
```

## Responses

### default

响应因 action 而异，见下方各 action 的详细说明。


## GetCertList

获取面板所有网站已部署的 SSL 证书概览，包括自签名、Let's Encrypt 和商用证书。

- **路由**：`POST /ssl`
- **action**：`GetCertList`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| - | Array&lt;Object&gt; | 证书列表，每项含 `issuer`(颁发者)、`subject`(主题)、`notAfter`(到期日)、`dns`(域名)、`endtime`(剩余天数) |

## 示例

```json
[{"issuer": "R13", "issuer_O": "Let's Encrypt", "notAfter": "2026-08-21", "dns": ["dnstest.cc"], "subject": "dnstest.cc", "endtime": 89}]
```


## GetSSLProduct

获取所有可购买的 SSL 证书产品的详细信息和价格。

- **路由**：`POST /ssl`
- **action**：`GetSSLProduct`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| msg | String | `获取成功!` |
| data | Array&lt;Object&gt; | 产品列表，含 `pid`、`name`、`type`、`price_12`(一年价)、`discount_12`(折扣) |

## 示例

```json
{"msg": "获取成功!", "data": [{"pid": 1, "name": "增强型 (EV) SSL证书专业版", "type": "Symantec", "price_12": 12650, "discount_12": 0.8}]}
```


## GetSiteDomain

获取面板中所有可用于申请 SSL 证书的域名列表。

- **路由**：`POST /ssl`
- **action**：`GetSiteDomain`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| all | Array&lt;String&gt; | 所有域名 |
| site | Array&lt;String&gt; | 已关联站点的域名 |

## 示例

```json
{"all": ["testapi.bt.local"], "site": []}
```


## GetUserInfo

获取当前面板绑定的宝塔账号用户名。

**前置条件**：面板已绑定宝塔账号。

- **路由**：`POST /ssl`
- **action**：`GetUserInfo`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| status | Boolean | `true` |
| data.username | String | 脱敏后的用户名 |

## 示例

```json
{"status": true, "msg": "获取成功!", "data": {"username": "155********"}}
```


## SetCertToSite (SSL)

将证书夹中已保存的 SSL 证书部署到指定网站，开启 HTTPS。

- **路由**：`POST /ssl`
- **action**：`SetCertToSite`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `SetCertToSite` |
| ssl_hash | 是 | String | 证书 hash（通过 `get_cert_list` 获取） |
| siteName | 是 | String | 目标网站域名 |

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| status | Boolean | `true` 部署成功 |
| msg | String | `SSL开启成功!` |
| csr | String | 部署的证书链（PEM 格式） |

## 示例

### 请求

```
POST /ssl HTTP/1.1
Host: 192.168.168.213:8888
Content-Type: application/x-www-form-urlencoded

action=SetCertToSite&ssl_hash=6da02a66c92a01d07b3aab68bf1317e6&siteName=testapi.bt.local
```

### 响应

```json
{"status": true, "msg": "SSL开启成功!", "csr": "-----BEGIN CERTIFICATE-----\n..."}
```

## 相关接口

- [get_cert_list](/api/ssl/get_cert_list) — 获取可用证书列表
- [get_cert_info](/api/ssl/get_cert_info) — 证书详情


## get_cert_info

获取证书夹中指定证书的完整信息。

- **路由**：`POST /ssl`
- **action**：`get_cert_info`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `get_cert_info` |
| ssl_hash | 是 | String | 证书的 hash 值（通过 `get_cert_list` 获取） |

## 示例

```json
{"id": 2, "hash": "6da02a66...", "dns": ["dnstest.cc"], "info": {"issuer": "R13", "notAfter": "2026-08-21"}}
```

## 相关接口

- [get_cert_list](/api/ssl/get_cert_list) — 证书列表


## get_cert_list

获取面板证书夹中已保存的 SSL 证书列表，包含签发者、到期时间等详细信息。

- **路由**：`POST /ssl`
- **action**：`get_cert_list`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| - | Array&lt;Object&gt; | 证书列表，每项含 `id`、`hash`、`dns`(域名)、`subject`、`info.issuer`、`info.notAfter`(到期日) |

## 示例

```json
[{"id": 2, "hash": "6da02a66...", "dns": ["dnstest.cc"], "subject": "dnstest.cc", "info": {"issuer": "R13", "notAfter": "2026-08-21"}}]
```


## get_order_find

获取指定订单的完整信息，包括签发的证书内容。

- **路由**：`POST /ssl`
- **action**：`get_order_find`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `get_order_find` |
| oid | 是 | Integer | 订单 ID |

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| oid | Integer | 订单 ID |
| pid | Integer | 产品 ID |
| status | Integer | 订单状态 |
| domainName | Array | 证书域名列表 |
| certificate | String | PEM 格式证书内容 |
| endDate | Integer | 到期时间戳 |

## 示例

```json
{"oid": 800013349, "pid": 9009, "status": 1, "domainName": ["*.allinssl.com"], "certificate": "-----BEGIN CERTIFICATE-----\n...", "endDate": 1786502398}
```


## get_order_list

获取当前面板账号下所有商用 SSL 证书的订单列表。

**前置条件**：面板已绑定宝塔账号。

- **路由**：`POST /ssl`
- **action**：`get_order_list`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| - | Array&lt;Object&gt; | 订单列表，每项含 `oid`(订单ID)、`pid`(产品ID)、`status`、`domainName`、`title`(产品名称)、`endDate`、`endDay`(剩余天数) |

## 示例

```json
[{"oid": 800013349, "pid": 9009, "status": 1, "domainName": ["*.allinssl.com"], "title": "宝塔域名型通配符SSL证书", "endDay": 80}]
```

## 相关接口

- [get_order_find](/api/ssl/get_order_find) — 订单详情
- [get_product_list](/api/ssl/get_product_list) — 可购买产品


## get_product_list

获取当前可购买的商用 SSL 证书产品，包含价格和折扣信息。

- **路由**：`POST /ssl`
- **action**：`get_product_list`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| data | Array&lt;Object&gt; | 产品列表，每项含 `pid`(产品ID)、`title`(名称)、`code`、`price`(价格)、`discount`(折扣)、`max_years` |

## 示例

```json
{"data": [{"pid": 8008, "title": "PositiveSSL 通配符SSL证书", "price": 1089, "discount": 1, "max_years": 5}]}
```


## get_ssl_ps

获取证书夹中指定证书的备注。

- **路由**：`POST /ssl`
- **action**：`get_ssl_ps`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `get_ssl_ps` |
| id | 是 | Integer | 证书 ID |

## 示例

```json
{"status": true, "msg": [{"ps": "测试备注"}]}
```


## set_cert

从已购买的商用 SSL 证书订单中提取证书并部署到指定网站。与 [SetCertToSite](/api/ssl/setcerttosite) 不同，此方法直接通过订单 ID 获取证书。

- **路由**：`POST /ssl`
- **action**：`set_cert`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `set_cert` |
| siteName | 是 | String | 目标网站域名 |
| oid | 是 | Integer | 商用证书订单 ID（通过 `get_order_list` 获取） |

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| status | Boolean | `true` 部署成功 |

## 示例

### 请求

```
POST /ssl HTTP/1.1
Host: 192.168.168.213:8888
Content-Type: application/x-www-form-urlencoded

action=set_cert&siteName=testapi.bt.local&oid=800013349
```

### 响应

```json
{"status": true, "msg": "设置成功"}
```

## 相关接口

- [get_order_list](/api/ssl/get_order_list) — 获取订单列表
- [get_order_find](/api/ssl/get_order_find) — 订单详情
- [SetCertToSite](/api/ssl/setcerttosite) — 从证书夹部署


## set_ssl_ps

修改证书夹中指定证书的备注。

- **路由**：`POST /ssl`
- **action**：`set_ssl_ps`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `set_ssl_ps` |
| id | 是 | Integer | 证书 ID |
| ps | 是 | String | 新的备注内容 |

## 示例

```json
{"status": true, "msg": "修改成功"}
```

