-
Notifications
You must be signed in to change notification settings - Fork 86
签名密钥对
yushijinhun edited this page Aug 21, 2017
·
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.