Hyperledger Fabric:CA 证书没有 CA 属性,即使它有
Hyperlegder Fabric: CA certificate does not have CA attribute even though it does
我正在尝试使用我自己的证书颁发机构和用户设置 Hyperledger Fabric 安装。我使用的是 版本 1.4.6。我越来越近了。但当我尝试创建频道时会发生这种情况:
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
作为回应,我得到:
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 证书时会发生以下情况:
openssl x509 -in crypto-config/indepedent/admin3/msp/cacerts/localhost-7054.pem -text -noout | grep CA:
CA:TRUE, pathlen:0
看来毕竟是CA属性啊。给出了什么?
请检查存在于 crypto-config/indepedent/admin3/msp/tlscacerts
文件夹中的证书并验证它是否是 CA 证书。
我无法让所有的东西都工作,但我让那部分工作了,但它并不明显,所以我在这里记录它以防它在将来帮助某人:
首先,制作钥匙。不是证书,只是密钥:
openssl ecparam -name prime256v1 -genkey -param_enc named_curve -out private-key.pem
prime
类型的椭圆曲线似乎是有效的,重要的是它们是 named_cure
类型。您可以更改大小。那部分在文档中。
然后制作证书:
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
属性。
[编辑]
我还设法制作了一个可用的配置文件,并使用更短的命令制作了同样的东西:
[ 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
然后:
openssl req -new -x509 -key private-key.pem -out tls-cert.pem -subj '/CN=The Subject' -days 10000 -config openssl.cnf
我正在尝试使用我自己的证书颁发机构和用户设置 Hyperledger Fabric 安装。我使用的是 版本 1.4.6。我越来越近了。但当我尝试创建频道时会发生这种情况:
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
作为回应,我得到:
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 证书时会发生以下情况:
openssl x509 -in crypto-config/indepedent/admin3/msp/cacerts/localhost-7054.pem -text -noout | grep CA:
CA:TRUE, pathlen:0
看来毕竟是CA属性啊。给出了什么?
请检查存在于 crypto-config/indepedent/admin3/msp/tlscacerts
文件夹中的证书并验证它是否是 CA 证书。
我无法让所有的东西都工作,但我让那部分工作了,但它并不明显,所以我在这里记录它以防它在将来帮助某人:
首先,制作钥匙。不是证书,只是密钥:
openssl ecparam -name prime256v1 -genkey -param_enc named_curve -out private-key.pem
prime
类型的椭圆曲线似乎是有效的,重要的是它们是 named_cure
类型。您可以更改大小。那部分在文档中。
然后制作证书:
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
属性。
[编辑]
我还设法制作了一个可用的配置文件,并使用更短的命令制作了同样的东西:
[ 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
然后:
openssl req -new -x509 -key private-key.pem -out tls-cert.pem -subj '/CN=The Subject' -days 10000 -config openssl.cnf