在Fabric CA中,“注册”和“重新注册”有什么区别?

时间:2019-05-06 01:49:57

标签: hyperledger-fabric hyperledger-fabric-ca

在Fabric-CA Client的CLI文档(https://hyperledger-fabric-ca.readthedocs.io/en/release-1.4/clientcli.html)中,有两个命令分别名为“ enroll”和“ reenroll”。有专家能告诉我他们之间的区别吗?谢谢。

2 个答案:

答案 0 :(得分:0)

注册命令用于首次向CA注册用户。

在某些情况下,证书将过期或被泄露(因此必须将其吊销)。因此,这就是重新注册的时候,您再次使用CA注册相同的身份以获得新证书。

有关证书吊销的补充说明:

可以出于多种原因(恰好是10个)进行吊销,吊销时也请不要忘记更新CRL(证书吊销列表)。

请仔细阅读本文档的以下部分,以更好地理解它们:

Reenrolling an Identity

Revoking an Identity

Generating a 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并提供用户名和密码。然后使用通过调用enrollreenroll获得的令牌,而不必再次暴露密码。因此,两者之间的差异纯粹是一种安全措施。是的,感谢Fabric使其令人困惑。