> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-add-new-agent.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 为第三方签名验证签署插件

> 本文档介绍如何在 Dify 社区版中启用和使用第三方签名验证功能，包括密钥对生成、插件签名和验证，以及环境配置步骤，使管理员能够安全地安装 Dify Marketplace 上没有的插件。

<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处，请参考[英文原版](/en/develop-plugin/publishing/standards/third-party-signature-verification)。</Note>

***

## title:

<Warning>此功能仅在 Dify 社区版中可用。Dify 云版本目前不支持第三方签名验证。</Warning>

第三方签名验证允许 Dify 管理员在不完全禁用签名验证的情况下，安全地批准安装未在 Dify Marketplace 上列出的插件。例如，这支持以下场景：

* Dify 管理员可以在审核通过开发者发送的插件后为其添加签名。
* 插件开发者可以为其插件添加签名，并将其与公钥一起发布，供无法禁用签名验证的 Dify 管理员使用。

Dify 管理员和插件开发者都可以使用预先生成的密钥对为插件添加签名。此外，管理员可以配置 Dify 在插件安装期间使用特定公钥强制执行签名验证。

## 生成用于签名和验证的密钥对

使用以下命令生成用于添加和验证插件签名的新密钥对：

```bash theme={null}
dify signature generate -f your_key_pair
```

运行此命令后，将在当前目录中生成两个文件：

* **私钥**：`your_key_pair.private.pem`
* **公钥**：`your_key_pair.public.pem`

私钥用于签署插件，公钥用于验证插件的签名。

<Warning>请妥善保管私钥。如果私钥泄露，攻击者可以为任何插件添加有效签名，这将危及 Dify 的安全性。</Warning>

## 为插件添加签名并验证

运行以下命令为您的插件添加签名。请注意，您必须指定**要签名的插件文件**和**私钥**：

```bash theme={null}
dify signature sign your_plugin_project.difypkg -p your_key_pair.private.pem
```

执行命令后，将在同一目录中生成一个新的插件文件，其原始文件名中添加了 `signed`：`your_plugin_project.signed.difypkg`

您可以使用此命令验证插件是否已正确签名。在这里，您需要指定**已签名的插件文件**和**公钥**：

```bash theme={null}
dify signature verify your_plugin_project.signed.difypkg -p your_key_pair.public.pem
```

<Info>如果省略公钥参数，验证将使用 Dify Marketplace 公钥。在这种情况下，对于任何未从 Dify Marketplace 下载的插件文件，签名验证都将失败。</Info>

## 启用第三方签名验证

Dify 管理员可以在安装插件之前使用预先批准的公钥强制执行签名验证。

### 放置公钥

将与签名所用私钥对应的**公钥**放置在插件守护程序可以访问的位置。

例如，在 `docker/volumes/plugin_daemon` 下创建一个 `public_keys` 目录，并将公钥文件复制到该目录：

```bash theme={null}
mkdir docker/volumes/plugin_daemon/public_keys
cp your_key_pair.public.pem docker/volumes/plugin_daemon/public_keys
```

### 环境变量配置

在 `plugin_daemon` 容器中，配置以下环境变量：

* `THIRD_PARTY_SIGNATURE_VERIFICATION_ENABLED`
  * 启用第三方签名验证。
  * 将此设置为 `true` 以启用该功能。
* `THIRD_PARTY_SIGNATURE_VERIFICATION_PUBLIC_KEYS`
  * 指定用于签名验证的公钥文件的路径。
  * 您可以列出多个公钥文件，用逗号分隔。

以下是配置这些变量的 Docker Compose 覆盖文件（`docker-compose.override.yaml`）示例：

```yaml theme={null}
services:
  plugin_daemon:
    environment:
      FORCE_VERIFYING_SIGNATURE: true
      THIRD_PARTY_SIGNATURE_VERIFICATION_ENABLED: true
      THIRD_PARTY_SIGNATURE_VERIFICATION_PUBLIC_KEYS: /app/storage/public_keys/your_key_pair.public.pem
```

<Info>请注意，`docker/volumes/plugin_daemon` 被挂载到 `plugin_daemon` 容器中的 `/app/storage`。请确保 `THIRD_PARTY_SIGNATURE_VERIFICATION_PUBLIC_KEYS` 中指定的路径对应于容器内的路径。</Info>

要应用这些更改，请重启 Dify 服务：

```bash theme={null}
cd docker
docker compose down
docker compose up -d
```

重启服务后，第三方签名验证功能将在当前社区版环境中启用。

***

[编辑此页面](https://github.com/langgenius/dify-docs/edit/main/en/develop-plugin/publishing/standards/third-party-signature-verification.mdx) | [报告问题](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)
