我正在尝试使用我自己的证书颁发机构和用户来设置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
的文件复制到密钥库中,但这还不够。该文件包含两个部分,必须删除第一个部分。因此,我必须删除前三行。
有效。完成此操作后,我获得了也可以用作TLS证书的CA证书。但是现在,我必须重新创建所有用户。
我尝试使用-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