-
Notifications
You must be signed in to change notification settings - Fork 72
签名密钥对
yushijinhun edited this page Apr 21, 2018
·
8 revisions
本文主要介绍 Yggdrasil 中用于数字签名的密钥对。文中将使用 OpenSSL 对密钥进行操作。
Yggdrasil 服务端持有私钥,而客户端持有公钥。
服务端会对以下请求的响应中的角色属性进行数字签名:
服务端通过扩展 API将公钥公开,以便 authlib-injector 自动获取。
注意:Yggdrasil 服务端应避免密钥的变化(不要每次启动时都生成一个,应在生成后将其保存)。 但不同的 Yggdrasil 服务不应使用同一个密钥。 如果使用多个服务端实例进行负载均衡,那么它们应该使用同一个密钥。
下面对 OpenSSL 的调用都是使用标准输入和标准输出进行输入输出的。
如果要使用文件,可使用参数 -in <file>
和 -out <file>
。
密钥算法为 RSA,且长度至少为 4096 位。
openssl genrsa 4096
生成的私钥将输出到标准输出。
私钥需要妥善保存,以防泄露(文件权限应为 rw-r-----
)。
openssl rsa -pubout
私钥从标准输入读入,公钥将输出到标准输出。
authlib-injector 使用的是 PEM 格式的公钥。 如果您有一个 DER 格式的公钥(如 authlib-agent 生成的),您可以通过以下命令转换:
openssl rsa -pubin -inform der
DER 格式公钥从标准输入读入,PEM 格式公钥将输出到标准输出。
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.