首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hyperlegder Fabric: CA证书不具有CA属性,即使它具有CA属性

Hyperlegder Fabric: CA证书不具有CA属性,即使它具有CA属性
EN

Stack Overflow用户
提问于 2020-04-10 00:52:46
回答 2查看 225关注 0票数 0

我正在尝试用我自己的证书颁发机构和用户来安装Hyperledger Fabric。我使用的是版本1.4.6。我越来越近了。但是,当我尝试创建一个频道时,会发生这样的情况:

代码语言:javascript
复制
peer channel create -o orderer.diro.umontreal.ca:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/indepedent/orderer/msp/signcerts/cert.pem

作为回应,我得到:

代码语言:javascript
复制
Cannot run peer because error when setting up MSP of type bccsp from directory /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/indepedent/admin3/msp: CA Certificate did not have the CA attribute, (SN: 6143ea1883f7a36a3d794bfab314ea05d9ddd270)

admin3是我目前向CA注册管理员的尝试。但是,当我试图查看该用户的CA证书时,会发生以下情况:

代码语言:javascript
复制
openssl x509 -in crypto-config/indepedent/admin3/msp/cacerts/localhost-7054.pem -text -noout | grep CA:
            CA:TRUE, pathlen:0

因此,它似乎毕竟具有CA属性。怎么回事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-10 08:09:53

请检查存在于:crypto-config/indepedent/admin3/msp/tlscacerts文件夹中的证书,并验证它是否为CA证书。

票数 1
EN

Stack Overflow用户

发布于 2020-04-12 04:14:21

我不能让一切正常工作,但我让这部分起作用了,而且这一点并不明显,所以我在这里记录它,以防它在将来帮助到某人:

首先,做好钥匙。不是证书,只是钥匙:

代码语言:javascript
复制
openssl ecparam -name prime256v1 -genkey -param_enc named_curve -out private-key.pem

prime类型的椭圆曲线似乎是起作用的,重要的是它们是named_cure类型。你可以改变尺寸。那部分在文件里。

然后制作证书:

代码语言:javascript
复制
openssl req -new -x509 -key private-key.pem -out tls-cert.pem -subj '/CN=Same name as original'  -days 10000 -addext "subjectAltName = DNS:localhost"

现在,当我启动CA的时候,它没有起作用。它想要一把私人钥匙。它给了私钥一个长的十六进制号。我将私钥作为一个名为<long_number>_sk的文件复制到密钥存储库中,但这还不够。该文件包含两个部分,必须删除第一个部分。所以我不得不进去移除前三行。

起作用了。在这样做之后,我获得了我的CA证书,它也用作TLS证书。但现在,我必须重新创建我的所有用户。

我尝试使用-config选项添加一个配置文件,但这删除了基本的CA:TRUE属性。

编辑

我还成功地创建了一个配置文件,该文件可以使用一个较短的命令进行相同的操作:

代码语言:javascript
复制
[ req ]
distinguished_name     = req_distinguished_name
x509_extensions        = v3_intermediate_ca

[ v3_intermediate_ca ]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints       = critical, CA:true, pathlen:0
keyUsage               = critical, digitalSignature, cRLSign, keyCertSign
subjectAltName         = @alt_names

[ req_distinguished_name ]
C                      = US
ST                     = CA
L                      = City
O                      = Institution
OU                     = Department
CN                     = main-ca

[ alt_names ]
DNS.0                  = CN localhost

然后:

代码语言:javascript
复制
openssl req -new -x509 -key private-key.pem -out tls-cert.pem -subj '/CN=The Subject' -days 10000 -config openssl.cnf
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61132483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档