本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。
第三方签名验证是 Dify Community Edition 功能。Dify Cloud 集中管理签名,不开放这些控制选项。
自部署 Dify 默认强制执行签名验证。第三方签名验证允许管理员安全地安装不在市场上的插件,而无需完全禁用验证。
两种场景:
管理员审核来自可信开发者的 .difypkg 文件,并在安装前使用自己的密钥进行签名。
开发者签署 .difypkg 并发布匹配的公钥。信任该开发者的管理员将该公钥添加到验证列表中。
两种情况的机制相同:生成密钥对,使用私钥签名,使用公钥验证。
生成密钥对#
当前目录中会生成两个文件:
| 文件 | 用途 |
|---|---|
your_key_pair.private.pem | 签署插件(保密) |
your_key_pair.public.pem | 验证签名(公开分享) |
妥善保管私钥。任何拥有私钥的人都可以签署插件,而这些插件在信任你公钥的安装实例上都能通过验证。
签署和验证插件#
签署软件包
在同一目录中生成 your_plugin_project.signed.difypkg。
验证已签名的软件包
在分发或安装之前确认签名匹配。
如果省略 -p 参数,dify signature verify 将使用 Dify 市场公钥进行验证。任何未由 Dify 签署的插件在该模式下都将验证失败。
在守护程序上启用验证#
管理员通过向插件守护程序提供受信任公钥列表来安装已签名的插件。
放置公钥
将 .public.pem 文件放置在守护程序容器可以访问的位置。对于 Docker Compose 安装:
配置守护程序环境
在 plugin_daemon 服务上设置以下变量:
| 变量 | 值 |
|---|---|
FORCE_VERIFYING_SIGNATURE | true |
THIRD_PARTY_SIGNATURE_VERIFICATION_ENABLED | true |
THIRD_PARTY_SIGNATURE_VERIFICATION_PUBLIC_KEYS | 容器内公钥的逗号分隔路径 |
docker-compose.override.yaml 示例片段:
docker/volumes/plugin_daemon 挂载到容器内的 /app/storage,因此 THIRD_PARTY_SIGNATURE_VERIFICATION_PUBLIC_KEYS 中的路径必须使用容器内路径。
重启 Dify
现在已强制执行验证安装:与配置的公钥匹配的已签名 .difypkg 文件可以顺利安装;未签名或不匹配的文件将被拒绝。