概述
Casdoor中的证书保存着用于签名和验证令牌(例如JWT)以及保障集成安全(SAML、支付提供商)的加密密钥。
证书属性
每个证书都具有:
- 所有者: 拥有证书的组织
- 名称: 证书的唯一名称
- 创建时间: 证书的创建时间
- 显示名称: 证书的可读名称
- 范围:证书的适用范围(例如,
JWT、SAML、支付) - 类型:证书的类型(例如,
x509、支付) - 加密算法:所使用的加密算法(例如,RSA 使用
RS256,ECDSA 使用ES256) - 位大小: 密钥的位数(例如:2048、4096)
- 有效期/年: 证书的有效期,单位为年
- 证书: 公共证书内容
- 私钥: 私钥内容(已安全存储)
SSL证书字段
类型为 SSL 的证书具有用于基于 ACME 的自动续订的附加字段:
| 字段 | 描述 |
|---|---|
| 到期时间 | 当前证书的到期时间戳(只读,自动填充) |
| 域名到期时间 | 域名注册的到期时间戳(只读,来自WHOIS查询) |
| 提供商 | 用于DNS-01 ACME挑战的DNS提供商:Aliyun或GoDaddy |
| 账户 | ACME账户邮箱地址 |
| AccessKey | DNS 提供商 API 密钥/访问密钥 ID |
| AccessSecret* | DNS 提供商 API 密钥 |
当您点击SSL证书上的续订时,Casdoor会联系ACME服务,通过已配置的DNS提供商完成DNS-01验证挑战,并自动存储颁发的证书和私钥。
证书适用范围
证书的使用方式因其适用范围而异:
JWT证书
JWT证书用于签名和验证JSON Web令牌。 当用户登录时,访问令牌会使用JWT证书的私钥进行签名。
Casdoor支持用于JWT令牌的RSA和ECDSA签名算法。 虽然RSA(RS256、RS384、RS512)一直是传统之选,但ECDSA算法(ES256、ES384、ES512)在同等安全级别下可提供更小的签名尺寸和更快的签名验证速度。 这有助于减小移动端的令牌大小,或在高吞吐量场景中提升性能。
对于JWT证书,请根据安全性和兼容性选择RSA或ECDSA。 配置Casdoor SDK时,请使用证书编辑页面上的公钥(复制或下载)。


创建JWT证书后,在您的应用设置中选择它:

SAML证书
SAML证书在单点登录集成中对SAML断言进行签名和加密。
用例:
- 基于SAML的SSO集成
- 签署SAML响 应
- 为安全起见对SAML断言进行加密
对于SAML,为身份提供商(IdP)和服务提供商(SP)创建证书,以确保通信安全。
有关 SAML 配置的更多信息,请参阅【SAML 文档】(/docs/how-to-connect/saml/overview).
支付证书
支付证书可确保与支付提供商(例如支付宝、微信支付)的通信安全。
用例:
- 使用支付网关保护API通信
- 签署支付请求
- 验证支付回调
例如,为支付宝创建证书:
- 应用证书:包含应用程序的公钥证书和私钥
- 根证书:包含支付提供商的证书

创建证书
要添加证书:
- 导航至Casdoor管理控制台中的证书页面
- 单击添加按钮以创建新证书
- 填写必填字段:
- 名称*:证书的唯一标识符
- 显示名称:可读性高的名称
- 范围:选择合适的范围(JWT、SAML、支付)
- 类型:选择证书类型
- 加密算法:选择加密算法(例如,RS256用于RSA,ES256用于ECDSA)。 对于JWT证书,支持RSA和ECDSA两种算法
- 位数: 设置密钥大小(通常为2048或4096位)
- 有效期(年): 设置有效期
- 或者:
- 通过保存表单自动生成新证书
- 上传现有证书和私钥
使用证书
在应用中
创建JWT证书后,将其关联到您的应用程序:
- 转到应用页面
- 编辑您的应用
- 在证书字段中,选择您创建的证书
- 保存应用
该证书现在将用于签署由该应用程序颁发的所有令牌。
在SDK配置中
在后端配置Casdoor SDK时,请提供JWT证书中的公钥:
var CasdoorEndpoint = "https://door.casdoor.com"
var ClientId = "541738959670d221d59d"
var ClientSecret = "66863369a64a5863827cf949bab70ed560ba24bf"
var CasdoorOrganization = "casbin"
var CasdoorApplication = "app-casnode"
//go:embed token_jwt_key.pem
var JwtPublicKey string
func init() {
auth.InitConfig(CasdoorEndpoint, ClientId, ClientSecret, JwtPublicKey, CasdoorOrganization, CasdoorApplication)
}
从Casdoor的证书编辑页面下载公钥。
有关SDK配置的更多信息,请参阅SDK文档。
在支付提供商中
在设置支付提供商时,请配置相应的证书:
- 创建所需的证书(例如,支付宝的应用证书和根证书)
- 前往提供商页面
- 编辑或创建您的支付提供商
- 在证书字段中,选择您创建的证书
- 保存提供商
最佳实践
- 密钥长度: RSA 密钥至少使用 2048 位;为获得更高安全性,可使用 4096 位。
- 有效期:* 设置合理的有效期(例如,生产环境中为 1 至 5 年)。
- 安全性: 绝不要在客户端代 码或公共仓库中暴露私钥。
- 轮换: 在证书到期前进行轮换。
- 备份: 存储证书和私钥的安全备份。
- 分离: 对JWT、SAML和支付使用独立的证书,以在密钥泄露时限制影响范围。
证书管理
通过以下方式管理证书:
- Web UI:Casdoor管理控制台提供了一个用户友好的界面,用于证书管理
- API: 使用Casdoor REST API以编程方式管理证书
- 数据初始化: 证书可包含在初始化文件中,用于自动化部署
有关数据初始化的更多信息,请参阅数据初始化文档。