You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Appwrite后Python调用接口报SSL自签名证书验证错误求解

问题原因

报错核心原因是Docker部署的Appwrite默认使用自签名SSL证书,本地Python的请求库默认不信任非权威CA签发的证书,和你猜测的证书信任问题完全吻合。

解决方法

方案1:本地测试快速跳过验证(仅限开发环境使用)

直接在Appwrite客户端配置中添加set_self_signed(True)参数,跳过证书校验,修改后的代码如下:

from appwrite.client import Client
from appwrite.services.users import Users

client = Client()

(client
  .set_endpoint('https://localhost/v1') # Your API Endpoint
  .set_project('testwriter') # Your project ID
  .set_key('b5b793e92b7f1badf34c3ef0ebfd475418a2372306ea4094eb5efb20bdc76e283e28345801d34c441149cc796f0ea7608ff0696a2121f577ca2beada75f904a46b1293a1d57699eed9750a2f12c4daa261e73231f6479e425276e7df053305118080f8280e7462b01b45349310f7086fc90a606d0d5ff2e102d7119ff627e0d4') # Your secret API key
  .set_self_signed(True) # 新增该行,跳过自签名证书校验
)

users = Users(client)

result = users.create('email@example.com', 'password')

注意:该方案会降低请求安全性,绝对禁止在生产环境使用

方案2:长期使用,信任自签名证书

如果你需要保留HTTPS访问,可按以下步骤操作:

  • 从Appwrite容器中导出证书:执行命令 docker cp appwrite:/etc/nginx/ssl/appwrite.crt ~/appwrite.crt,如果你的Appwrite容器名有自定义,替换命令中的appwrite为你的容器名
  • 将导出的证书添加到本地系统的受信任根证书列表:
    • MacOS:双击证书文件,在钥匙串中设置为「始终信任」
    • Linux:将证书移动到/usr/local/share/ca-certificates/目录,执行sudo update-ca-certificates
    • Windows:右键证书文件,选择「安装证书」,导入到「受信任的根证书颁发机构」存储区
  • 也可以直接在Appwrite客户端配置中指定证书路径,添加 .set_certificate("~/appwrite.crt") 即可

方案3:本地开发改用HTTP访问

如果没有HTTPS需求,可直接将接口地址的协议改为HTTP,注意确认Docker部署时是否映射了Appwrite的80端口,如果映射的是自定义端口(比如8080),需要在地址中带上端口:

.set_endpoint('http://localhost:80/v1') # 替换为你实际的HTTP访问地址
注意事项
  • 跳过SSL验证、使用HTTP访问的方案仅适合本地开发环境,生产环境必须使用正规CA机构签发的SSL证书,避免数据泄露风险
  • 如果修改过Appwrite的默认端口映射,需要在endpoint地址中填写实际映射的端口

内容的提问来源于stack exchange,提问作者vwdewaal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:15:03