在Fabric-CA Client的CLI文档(https://hyperledger-fabric-ca.readthedocs.io/en/release-1.4/clientcli.html)中,有两个命令分别名为“ enroll”和“ reenroll”。有专家能告诉我他们之间的区别吗?谢谢。
答案 0 :(得分:0)
注册命令用于首次向CA注册用户。
在某些情况下,证书将过期或被泄露(因此必须将其吊销)。因此,这就是重新注册的时候,您再次使用CA注册相同的身份以获得新证书。
有关证书吊销的补充说明:
可以出于多种原因(恰好是10个)进行吊销,吊销时也请不要忘记更新CRL(证书吊销列表)。
请仔细阅读本文档的以下部分,以更好地理解它们:
答案 1 :(得分:0)
有疑问的代码是最好的文档
// Handle an enroll request, guarded by basic authentication
func enrollHandler(ctx *serverRequestContextImpl) (interface{}, error) {
id, err := ctx.BasicAuthentication()
if err != nil {
return nil, err
}
resp, err := handleEnroll(ctx, id)
if err != nil {
return nil, err
}
err = ctx.ui.LoginComplete()
if err != nil {
return nil, err
}
return resp, nil
}
// Handle a reenroll request, guarded by token authentication
func reenrollHandler(ctx *serverRequestContextImpl) (interface{}, error) {
// Authenticate the caller
id, err := ctx.TokenAuthentication()
if err != nil {
return nil, err
}
return handleEnroll(ctx, id)
}
我们可以看到两个调用handleEnroll
的方法。唯一的区别似乎是enroll
使用BasicAuthentication
,而reenroll
使用TokenAuthentication
。
// BasicAuthentication验证调用者的用户名并 密码//在授权标头中找到并返回用户名
// TokenAuthentication通过令牌//在 授权标头。 //返回注册ID或错误。
因此,出于安全原因,您将首先致电enroll
并提供用户名和密码。然后使用通过调用enroll
到reenroll
获得的令牌,而不必再次暴露密码。因此,两者之间的差异纯粹是一种安全措施。是的,感谢Fabric使其令人困惑。