服务发现命令行工具

参考:Service Discovery CLI(v1.4官方文档)

discover cli 是V1.3版本实现的功能

发现服务是为了获取网络中最新的状态,使得客户端sdk能知道最新链码的背书策略,网络中各组织节点的endpoint等信息。

主要子命令

  • saveConfig
  • peers
  • config
  • endorsers

生成配置文件

此处使用first-network做实验,根据实际情况设置环境变量

export USERKEY=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/d5ab1ca7ba2e863d00de6d0eacfeb79abb33f2c604ede50b6d9fe480c1cec530_skexport USERCERT=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pemexport TLSCERT=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt
# 生成配置文件
discover --configFile conf.yaml --peerTLSCA $TLSCERT --userKey $USERKEY --userCert $USERCERT  --MSP Org1MSP saveConfig
# cat conf.yaml   ## 查看刚刚生成的配置文件
version: 0
tlsconfig:certpath: ""keypath: ""peercacertpath: /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crttimeout: 0s
signerconfig:mspid: Org1MSPidentitypath: /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pemkeypath: /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/d5ab1ca7ba2e863d00de6d0eacfeb79abb33f2c604ede50b6d9fe480c1cec530_sk

查询peer membership

$ discover --configFile conf.yaml peers --channel mychannel  --server peer0.org1.example.com:7051[{"MSPID": "Org2MSP","LedgerHeight": 5,"Endpoint": "peer0.org2.example.com:9051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKTCCAc+gAwIBAgIRANK4WBck5gKuzTxVQIwhYMUwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwNjE3MTM0NTIxWhcNMjgwNjE0MTM0NTIx\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJa0gkMRqJCi\nzmx+L9xy/ecJNvdAV2zmSx5Sf2qospVAH1MYCHyudDEvkiRuBPgmCdOdwJsE0g+h\nz0nZdKq6/X+jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIFZMuZfUtY6n2iyxaVr3rl+x5lU0CdG9x7KAeYydQGTMMAoGCCqGSM49\nBAMCA0gAMEUCIQC0M9/LJ7j3I9NEPQ/B1BpnJP+UNPnGO2peVrM/mJ1nVgIgS1ZA\nA1tsxuDyllaQuHx2P+P9NDFdjXx5T08lZhxuWYM=\n-----END CERTIFICATE-----\n","Chaincodes": ["mycc"]},{"MSPID": "Org2MSP","LedgerHeight": 5,"Endpoint": "peer1.org2.example.com:10051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIRALnNJzplCrYy4Y8CjZtqL7AwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwNjE3MTM0NTIxWhcNMjgwNjE0MTM0NTIx\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjEub3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNDopAkHlDdu\nq10HEkdxvdpkbs7EJyqv1clvCt/YMn1hS6sM+bFDgkJKalG7s9Hg3URF0aGpy51R\nU+4F9Muo+XajTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIFZMuZfUtY6n2iyxaVr3rl+x5lU0CdG9x7KAeYydQGTMMAoGCCqGSM49\nBAMCA0cAMEQCIAR4fBmIBKW2jp0HbbabVepNtl1c7+6++riIrEBnoyIVAiBBvWmI\nyG02c5hu4wPAuVQMB7AU6tGSeYaWSAAo/ExunQ==\n-----END CERTIFICATE-----\n","Chaincodes": ["mycc"]},{"MSPID": "Org1MSP","LedgerHeight": 5,"Endpoint": "peer0.org1.example.com:7051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc6gAwIBAgIQP18LeXtEXGoN8pTqzXTHZTAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0xODA2MTcxMzQ1MjFaFw0yODA2MTQxMzQ1MjFa\nMGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMC5vcmcx\nLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKeC/1Rg/ynSk\nNNItaMlaCDZOaQvxJEl6o3fqx1PVFlfXE4NarY3OO1N3YZI41hWWoXksSwJu/35S\nM7wMEzw+3KNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j\nBCQwIoAgcecTOxTes6rfgyxHH6KIW7hsRAw2bhP9ikCHkvtv/RcwCgYIKoZIzj0E\nAwIDSAAwRQIhAKiJEv79XBmr8gGY6kHrGL0L3sq95E7IsCYzYdAQHj+DAiBPcBTg\nRuA0//Kq+3aHJ2T0KpKHqD3FfhZZolKDkcrkwQ==\n-----END CERTIFICATE-----\n","Chaincodes": ["mycc"]},{"MSPID": "Org1MSP","LedgerHeight": 5,"Endpoint": "peer1.org1.example.com:8051","Identity": "-----BEGIN CERTIFICATE-----\nMIICJzCCAc6gAwIBAgIQO7zMEHlMfRhnP6Xt65jwtDAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0xODA2MTcxMzQ1MjFaFw0yODA2MTQxMzQ1MjFa\nMGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMS5vcmcx\nLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoII9k8db/Q2g\nRHw5rk3SYw+OMFw9jNbsJJyC5ttJRvc12Dn7lQ8ZR9hW1vLQ3NtqO/couccDJcHg\nt47iHBNadaNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j\nBCQwIoAgcecTOxTes6rfgyxHH6KIW7hsRAw2bhP9ikCHkvtv/RcwCgYIKoZIzj0E\nAwIDRwAwRAIgGHGtRVxcFVeMQr9yRlebs23OXEECNo6hNqd/4ChLwwoCIBFKFd6t\nlL5BVzVMGQyXWcZGrjFgl4+fDrwjmMe+jAfa\n-----END CERTIFICATE-----\n","Chaincodes": null}
]

用openssl解析其中身份信息

$ discover --configFile conf.yaml peers --channel mychannel  --server peer0.org1.example.com:7051  | jq .[0].Identity | sed "s/\\\n/\n/g" | sed "s/\"//g"  | openssl x509 -text -nooutCertificate:Data:Version: 3 (0x2)Serial Number:55:e9:3f:97:94:d5:74:db:e2:d6:99:3c:01:24:be:bfSignature Algorithm: ecdsa-with-SHA256Issuer: C=US, ST=California, L=San Francisco, O=org2.example.com, CN=ca.org2.example.comValidityNot Before: Jun  9 11:58:28 2018 GMTNot After : Jun  6 11:58:28 2028 GMTSubject: C=US, ST=California, L=San Francisco, OU=peer, CN=peer0.org2.example.comSubject Public Key Info:Public Key Algorithm: id-ecPublicKeyPublic-Key: (256 bit)pub:04:f5:69:7a:11:65:d9:85:96:65:b7:b7:1b:08:77:43:de:cb:ad:3a:79:ec:cc:2a:bc:d7:93:68:ae:92:1c:4b:d8:32:47:d6:3d:72:32:f1:f1:fb:26:e4:69:c2:eb:c9:45:69:99:78:d7:68:a9:77:09:88:c6:53:01:2a:c1:f8:c0ASN1 OID: prime256v1NIST CURVE: P-256X509v3 extensions:X509v3 Key Usage: criticalDigital SignatureX509v3 Basic Constraints: criticalCA:FALSEX509v3 Authority Key Identifier:keyid:8E:58:82:C9:0A:11:10:A9:0B:93:03:EE:A0:54:42:F4:A3:EF:11:4C:82:B6:F9:CE:10:A2:1E:24:AB:13:82:A0Signature Algorithm: ecdsa-with-SHA25630:44:02:20:29:3f:55:2b:9f:7b:99:b2:cb:06:ca:15:3f:93:a1:3d:65:5c:7b:79:a1:7a:d1:94:50:f0:cd:db:ea:61:81:7a:02:20:3b:40:5b:60:51:3c:f8:0f:9b:fc:ae:fc:21:fd:c8:36:a3:18:39:58:20:72:3d:1a:43:74:30:f3:56:01:aa:26

查询配置

$ discover --configFile conf.yaml config --channel mychannel  --server peer0.org1.example.com:7051{"msps": {"OrdererMSP": {"name": "OrdererMSP","root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUlmdlhzRGFBWDMzYTJHVXh0MzFOd1F3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHhPVEV5TWpNd016SXpNREJhRncweU9URXlNakF3TXpJek1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmRNYUhjK0prY01xNEdqbDVvcno4Y3NTSTAKVzBidmlVYStDS1UrUWlXb2JqdUZPRjdFVDNOcXJNZW96U3dTTlg1eWp4OWpRcmwwWitLa2xpZ1JxYzZrbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlBMFdVNTY1b2JYakJjaGgzZ08zZkJnZk1NMTgKK0dGOUpMR055eENTcWpqOU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRE9IU25kRFR1SGhRazNFMytSQmF4cwpIR2VqdktmaEJrV29JMG9CdGhLVnJ3SWdCSzl4MTgyRE16WDFmUm4rYXI3eEp2eEcza0hMa0RrZ0dWNWtiK0JTCjBoZz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="],"admins": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNDVENDQWJDZ0F3SUJBZ0lRQ1lyVXhwcGxnR25Uc1VBYjFrUFBmVEFLQmdncWhrak9QUVFEQWpCcE1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4RnpBVkJnTlZCQU1URG1OaExtVjRZVzF3CmJHVXVZMjl0TUI0WERURTVNVEl5TXpBek1qTXdNRm9YRFRJNU1USXlNREF6TWpNd01Gb3dWakVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJsegpZMjh4R2pBWUJnTlZCQU1NRVVGa2JXbHVRR1Y0WVcxd2JHVXVZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJCnpqMERBUWNEUWdBRTIweU1NSVBrUVJKdmZIWDRpc1BJNDNFL2dyZm5INDI4L0xTdVhmZFRuMU9EUTF5UjkvbjkKOXRhdkFDV3ZiL0ppWmFXWjhOcmsyY1lpdWxRRXFrSFE2Nk5OTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3RwpBMVVkRXdFQi93UUNNQUF3S3dZRFZSMGpCQ1F3SW9BZ0RSWlRucm1odGVNRnlHSGVBN2Q4R0I4d3pYejRZWDBrCnNZM0xFSktxT1Awd0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ0lsWWpURW9ucmc3R1o0OHN4ZWRRQW94ZGNvZUoKZGgwRCtaOG1EWGVVV04wQ0lIOXBaUE94bE5rYVpuK21reXk5WkxkZVpjNGo0YnFrQ1c5Qzd1VEtic0prCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"],"crypto_config": {"signature_hash_family": "SHA2","identity_identifier_hash_function": "SHA256"},"tls_root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRekNDQWVtZ0F3SUJBZ0lRSHRhc05Bb3RldnFQeHZrdnBoemVLREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEU1TVRJeU16QXpNak13TUZvWERUSTVNVEl5TURBek1qTXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQlBwZ0tMa1REb3BlZ1YvNW4yaVgKUVFtSHN6cUdheCt5ZXA0U3U2OGdSb050N1JLekVzTkFBSkplMjVYYUQzV0RnbW1DTUg4dEU1b1hLWlFaUkhrNwpQWXVqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnaUlwVURmNEhxU0hFNUpocjRoZDQKdGp6OC84WlVnOUtha0VkeEhiVFM5WUl3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQVBVR0k0U1pITGxoVitRaApETllvL3BBZFRPTXpzaFlPOW9hZGg2ZjRRZkVFQWlCeWhQaWpPZFd5Vnk1alJaVzlvdzJWSkMyRXVZMi9QcFA4ClM3ZitmRUN5d2c9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="]},"Org1MSP": {"name": "Org1MSP","root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZlZ0F3SUJBZ0lRYXR4OWhLa01xbXJ5T2RnZm1NdW8xakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHhPVEV5TWpNd016SXpNREJhRncweU9URXlNakF3TXpJek1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3hMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKcEZWNXFVc3BnclE4WGluVGl2UkF4WXdja1JCaVpOSUlFTWsxMnZ6Q0hCVnZtVEd1QmlYUnNlbHNTMmVGYWpOUAorVytGMDRaWnVCZkZLYml0dlArMVRhTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQUwKUHU2YjZqbUk2ZFZIdzUreXg2ZVhPWUdBRkRDdlhGWGdUQmhCcWNwU3JEQUtCZ2dxaGtqT1BRUURBZ05JQURCRgpBaUVBbHVaZ1AwSTNjMEg5bDNzNmRuRm9oS0RoVnBuSE0wL3dZL0ZRN1kzbTVoUUNJRFdUZVFrdVA4NFNRdFplCmtZMU1YUEZQZ0x1OEdWcGl4azB6Q3h0bERLSHIKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="],"admins": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLakNDQWRHZ0F3SUJBZ0lSQUxwT3F3ZTNHMnpqYVhkbFdFN2RQbW93Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05NVGt4TWpJek1ETXlNekF3V2hjTk1qa3hNakl3TURNeU16QXcKV2pCc01Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFUE1BMEdBMVVFQ3hNR1kyeHBaVzUwTVI4d0hRWURWUVFEREJaQlpHMXBia0J2CmNtY3hMbVY0WVcxd2JHVXVZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFZDJ6WHVEamQKdlV0LzJ2NGxXUU0xYVd4SDVaUSt0dnNDODhGOW83djV6S1RIdS81MjVibGdja3JyWHE3bTVWbEZ6RmJqbzVwSwpmVC9HOFNRWHd0WGlycU5OTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEClZSMGpCQ1F3SW9BZ0N6N3VtK281aU9uVlI4T2Zzc2VubHptQmdCUXdyMXhWNEV3WVFhbktVcXd3Q2dZSUtvWkkKemowRUF3SURSd0F3UkFJZ1pISWR2cXlNajJLQk1vMnJoMy9IcUc0MjF1RHJOT3d0UjVDY0lVeW5iSXNDSUdSQQowNDVHbE52WjB5QW5GMUs3UlBwckpZWGlHY0J2czhNZys5UjFETmJZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"],"crypto_config": {"signature_hash_family": "SHA2","identity_identifier_hash_function": "SHA256"},"tls_root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWYyZ0F3SUJBZ0lRZUNoS0hPSDZpaEladEMzVk84T2lPVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQWVGdzB4T1RFeU1qTXdNekl6TURCYUZ3MHlPVEV5TWpBd016SXoKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN4TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN4TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVmWERPQ005SlNPdVNFTEsyYUp1cy9PdzVKOXQ5eHZEMGw3Y2UrQUxTZHhDS3I5V3Nqd2UzRGQ5cgoybFZmc2R5dUFyOGxadmR5YlpZNzBETnBablBRWXFOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQ0x3NnRmN1BJQmZIQnZlUTlrdEFTRkZHTi9uMlBCSklaSlE4Umhack9kYWpBS0JnZ3Foa2pPUFFRRApBZ05JQURCRkFpRUFrdjlJczRLU0ZuK1pzdXZhdzZERmtUS0dtZ0ZMMFdjNkVHYjNnUE0rMFhvQ0lDWXBqc1pxCk1NM2Y2NzlnSWJJZ1VsUzBjTy9BVnh4VGN2aW9oTXgxREpYYwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="],"fabric_node_ous": {"enable": true,"client_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZlZ0F3SUJBZ0lRYXR4OWhLa01xbXJ5T2RnZm1NdW8xakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHhPVEV5TWpNd016SXpNREJhRncweU9URXlNakF3TXpJek1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3hMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKcEZWNXFVc3BnclE4WGluVGl2UkF4WXdja1JCaVpOSUlFTWsxMnZ6Q0hCVnZtVEd1QmlYUnNlbHNTMmVGYWpOUAorVytGMDRaWnVCZkZLYml0dlArMVRhTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQUwKUHU2YjZqbUk2ZFZIdzUreXg2ZVhPWUdBRkRDdlhGWGdUQmhCcWNwU3JEQUtCZ2dxaGtqT1BRUURBZ05JQURCRgpBaUVBbHVaZ1AwSTNjMEg5bDNzNmRuRm9oS0RoVnBuSE0wL3dZL0ZRN1kzbTVoUUNJRFdUZVFrdVA4NFNRdFplCmtZMU1YUEZQZ0x1OEdWcGl4azB6Q3h0bERLSHIKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "client"},"peer_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVVENDQWZlZ0F3SUJBZ0lRYXR4OWhLa01xbXJ5T2RnZm1NdW8xakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHhPVEV5TWpNd016SXpNREJhRncweU9URXlNakF3TXpJek1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3hMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKcEZWNXFVc3BnclE4WGluVGl2UkF4WXdja1JCaVpOSUlFTWsxMnZ6Q0hCVnZtVEd1QmlYUnNlbHNTMmVGYWpOUAorVytGMDRaWnVCZkZLYml0dlArMVRhTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQUwKUHU2YjZqbUk2ZFZIdzUreXg2ZVhPWUdBRkRDdlhGWGdUQmhCcWNwU3JEQUtCZ2dxaGtqT1BRUURBZ05JQURCRgpBaUVBbHVaZ1AwSTNjMEg5bDNzNmRuRm9oS0RoVnBuSE0wL3dZL0ZRN1kzbTVoUUNJRFdUZVFrdVA4NFNRdFplCmtZMU1YUEZQZ0x1OEdWcGl4azB6Q3h0bERLSHIKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=","organizational_unit_identifier": "peer"}}},"Org2MSP": {"name": "Org2MSP","root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUtOeGxJZ1pEbmNibFViVW1oc3kvOWd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05NVGt4TWpJek1ETXlNekF3V2hjTk1qa3hNakl3TURNeU16QXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkJVSVArQ05zSWpBQjd5R3VhajNRWkdkZEhCa1g5RFZibWZWUlJ6U3RuS215ZG1HVDdMcDArVTcrQlVEYU9qUQpPeXFWL2gyWGZCT2Rpd0FpSUhuSEc3ZWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKQnNENlBTQTZqQlpsWDlWSStkSXo2Z21uQmVkMm1teEZaY3JCdXRjaWZuWXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQU0xS2hrajFVZzBJMmkyUENLZFY3WmIwc2x3a3hQTnNGcStlL0hqbEF1Q2ZBaUI2eE9EQ2dTQ2hCZHMzClk4bFI2TzY0ZDllNy9LZVlJTU0vUGxNcFIwKzl0dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"],"admins": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLekNDQWRHZ0F3SUJBZ0lSQUtqS0dualpaMmRnM2VpeTlVMTVrN3d3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05NVGt4TWpJek1ETXlNekF3V2hjTk1qa3hNakl3TURNeU16QXcKV2pCc01Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFUE1BMEdBMVVFQ3hNR1kyeHBaVzUwTVI4d0hRWURWUVFEREJaQlpHMXBia0J2CmNtY3lMbVY0WVcxd2JHVXVZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFV0pwMjNJNXYKMFlYdXVncXBPTkpzNUJaZ2xoa20zb2RwU0hhT3I4d3piZXJZUy80ek1teS9nT1BMUjdGN2g1YVZIQ3lPdEhJNwpaMjFQTHQ5ZU0rWGxFcU5OTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEClZSMGpCQ1F3SW9BZ0JzRDZQU0E2akJabFg5VkkrZEl6NmdtbkJlZDJtbXhGWmNyQnV0Y2lmbll3Q2dZSUtvWkkKemowRUF3SURTQUF3UlFJaEFQVHB0STZTR294MFByc21VSXgzQ2xUWHdIV2NjT2VSMUp6QnNKS0dUTUdPQWlCdgp5dGRPV1VtZlJaYWU3OTRoemY5R2diTmRRVGJiVjBVV3U3YmlpbDIzaVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="],"crypto_config": {"signature_hash_family": "SHA2","identity_identifier_hash_function": "SHA256"},"tls_root_certs": ["LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWYyZ0F3SUJBZ0lRU0x5dWxmN1pmT09FTUd2ZnI3Z0NlVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQWVGdzB4T1RFeU1qTXdNekl6TURCYUZ3MHlPVEV5TWpBd016SXoKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN5TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN5TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVSYnZvaitLcFZxdmRkSTNCaVFaWTBZNHIvWkRqMVJPbTVOa2RrL3VlUnZpRnpCMmRSdVk2UWlvZwppSHZHT1dCWGxJeXlwaGZnK1ZQMkhyc0Z6YkN2Q3FOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQUZmaEd0UC9sSkVodUo1TytQQTdHb2c1U3pZS1ZDZHNjT0NpWHAxeXdFV1RBS0JnZ3Foa2pPUFFRRApBZ05JQURCRkFpRUEvUlFyeHRiNkp5RkNVcFFsRklpZnYyMnE1aGRBNVoxcWVRNkdiMTJiWjBjQ0lITllYenZMCjFweWw3bDFDY1BleUczaS91RzdoZFFQQ0R6RjBTVi8xejlJVAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="],"fabric_node_ous": {"enable": true,"client_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUtOeGxJZ1pEbmNibFViVW1oc3kvOWd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05NVGt4TWpJek1ETXlNekF3V2hjTk1qa3hNakl3TURNeU16QXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkJVSVArQ05zSWpBQjd5R3VhajNRWkdkZEhCa1g5RFZibWZWUlJ6U3RuS215ZG1HVDdMcDArVTcrQlVEYU9qUQpPeXFWL2gyWGZCT2Rpd0FpSUhuSEc3ZWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKQnNENlBTQTZqQlpsWDlWSStkSXo2Z21uQmVkMm1teEZaY3JCdXRjaWZuWXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQU0xS2hrajFVZzBJMmkyUENLZFY3WmIwc2x3a3hQTnNGcStlL0hqbEF1Q2ZBaUI2eE9EQ2dTQ2hCZHMzClk4bFI2TzY0ZDllNy9LZVlJTU0vUGxNcFIwKzl0dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K","organizational_unit_identifier": "client"},"peer_ou_identifier": {"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUtOeGxJZ1pEbmNibFViVW1oc3kvOWd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05NVGt4TWpJek1ETXlNekF3V2hjTk1qa3hNakl3TURNeU16QXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkJVSVArQ05zSWpBQjd5R3VhajNRWkdkZEhCa1g5RFZibWZWUlJ6U3RuS215ZG1HVDdMcDArVTcrQlVEYU9qUQpPeXFWL2gyWGZCT2Rpd0FpSUhuSEc3ZWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKQnNENlBTQTZqQlpsWDlWSStkSXo2Z21uQmVkMm1teEZaY3JCdXRjaWZuWXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQU0xS2hrajFVZzBJMmkyUENLZFY3WmIwc2x3a3hQTnNGcStlL0hqbEF1Q2ZBaUI2eE9EQ2dTQ2hCZHMzClk4bFI2TzY0ZDllNy9LZVlJTU0vUGxNcFIwKzl0dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K","organizational_unit_identifier": "peer"}}}},"orderers": {"OrdererMSP": {"endpoint": [{"host": "orderer.example.com","port": 7050}]}}
}

其中值得注意的是,证书是由base64编码过的,需要用一下方法解码为人方便阅读的形式

$ discover --configFile conf.yaml config --channel mychannel  --server peer0.org1.example.com:7051 | jq .msps.OrdererOrg.root_certs[0] | sed "s/\"//g" | base64 --decode | openssl x509 -text -noout
Certificate:Data:Version: 3 (0x2)Serial Number:c8:99:2d:3a:2d:7f:4b:73:53:8b:39:18:7b:c3:e1:1eSignature Algorithm: ecdsa-with-SHA256Issuer: C=US, ST=California, L=San Francisco, O=example.com, CN=ca.example.comValidityNot Before: Jun  9 11:58:28 2018 GMTNot After : Jun  6 11:58:28 2028 GMTSubject: C=US, ST=California, L=San Francisco, O=example.com, CN=ca.example.comSubject Public Key Info:Public Key Algorithm: id-ecPublicKeyPublic-Key: (256 bit)pub:04:28:ac:9e:51:8d:a4:80:15:0a:ff:ae:c9:61:d6:08:67:b0:15:c3:c7:99:46:61:63:0a:10:a6:42:6a:b0:af:14:0c:c0:e2:5b:b4:a1:c3:f0:07:7e:5b:7c:c4:b2:95:13:95:81:4b:6a:b9:e3:87:a4:f3:2c:7c:ae:00:91:9e:32ASN1 OID: prime256v1NIST CURVE: P-256X509v3 extensions:X509v3 Key Usage: criticalDigital Signature, Key Encipherment, Certificate Sign, CRL SignX509v3 Extended Key Usage:Any Extended Key UsageX509v3 Basic Constraints: criticalCA:TRUEX509v3 Subject Key Identifier:60:9D:F2:30:26:CE:8F:65:81:41:AD:96:15:0E:24:8D:A0:9D:C5:79:C1:17:BF:FE:E5:1B:FB:75:50:10:A6:4CSignature Algorithm: ecdsa-with-SHA25630:44:02:20:3d:e1:a7:6c:99:3f:87:2a:36:44:51:98:37:11:d8:a0:47:7a:33:ff:30:c1:09:a6:05:ec:b0:53:53:39:c1:0e:02:20:6b:f4:1d:48:e0:72:e4:c2:ef:b0:84:79:d4:2e:c2:c5:1b:6f:e4:2f:56:35:51:18:7d:93:51:86:05:84:ce:1f

背书策略查询

查询背书需要指定参数

  • --chaincode参数是必须的,指定了链码的名称
  • --collection用于指定链码希望使用的私有数据collection

例子:

--chaincode=cc1 --chaincode=cc2 --collection=cc2:col1

以下是查询链码mycc的结果,背书策略为AND('Org1.peer', 'Org2.peer')

$ discover --configFile conf.yaml endorsers --channel mychannel  --server peer0.org1.example.com:7051 --chaincode mycc[{"Chaincode": "mycc","EndorsersByGroups": {"G0": [{"MSPID": "Org1MSP","LedgerHeight": 5,"Endpoint": "peer0.org1.example.com:7051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIRANTiKfUVHVGnrYVzEy1ZSKIwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwNjA5MTE1ODI4WhcNMjgwNjA2MTE1ODI4\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD8jGz1l5Rrw\n5UWqAYnc4JrR46mCYwHhHFgwydccuytb00ouD4rECiBsCaeZFr5tODAK70jFOP/k\n/CtORCDPQ02jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIOBdQLF+cMWa6e1p2CpOEx7SHUinzVvd55hLm7w6v72oMAoGCCqGSM49\nBAMCA0cAMEQCIC3bacbDYphXfHrNULxpV/zwD08t7hJxNe8MwgP8/48fAiBiC0cr\nu99oLsRNCFB7R3egyKg1YYao0KWTrr1T+rK9Bg==\n-----END CERTIFICATE-----\n"}],"G1": [{"MSPID": "Org2MSP","LedgerHeight": 5,"Endpoint": "peer1.org2.example.com:10051","Identity": "-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIRAIs6fFxk4Y5cJxSwTjyJ9A8wCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMTgwNjA5MTE1ODI4WhcNMjgwNjA2MTE1ODI4\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjEub3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOVFyWVmKZ25\nxDYV3xZBDX4gKQ7rAZfYgOu1djD9EHccZhJVPsdwSjbRsvrfs9Z8mMuwEeSWq/cq\n0cGrMKR93vKjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAII5YgskKERCpC5MD7qBUQvSj7xFMgrb5zhCiHiSrE4KgMAoGCCqGSM49\nBAMCA0cAMEQCIDJmxseFul1GZ26djKa6jZ6zYYf6hchNF5xxMRWXpCnuAiBMf6JZ\njZjVM9F/OidQ2SBR7OZyMAzgXc5nAabWZpdkuQ==\n-----END CERTIFICATE-----\n"},{"MSPID": "Org2MSP","LedgerHeight": 5,"Endpoint": "peer0.org2.example.com:9051","Identity": "-----BEGIN CERTIFICATE-----\nMIICJzCCAc6gAwIBAgIQVek/l5TVdNvi1pk8ASS+vzAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMi5leGFtcGxlLmNvbTAeFw0xODA2MDkxMTU4MjhaFw0yODA2MDYxMTU4Mjha\nMGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMC5vcmcy\nLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9Wl6EWXZhZZl\nt7cbCHdD3sutOnnszCq815NorpIcS9gyR9Y9cjLx8fsm5GnC68lFaZl412ipdwmI\nxlMBKsH4wKNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j\nBCQwIoAgjliCyQoREKkLkwPuoFRC9KPvEUyCtvnOEKIeJKsTgqAwCgYIKoZIzj0E\nAwIDRwAwRAIgKT9VK597mbLLBsoVP5OhPWVce3mhetGUUPDN2+phgXoCIDtAW2BR\nPPgPm/yu/CH9yDajGDlYIHI9GkN0MPNWAaom\n-----END CERTIFICATE-----\n"}]},"Layouts": [{"quantities_by_group": {"G0": 1,"G1": 1}}]}
]

Hyperledger Fabric Service Discovery CLI(服务发现命令行工具)学习笔记相关推荐

  1. 阿里云大数据计算服务MaxCompute命令行工具——odpscmd的操作使用

    在MaxCompute生态中,命令行工具究竟处于什么样的位置?它又发挥着什么样的作用?能够帮助开发者如何更好使用MaxCompute?在本文中,阿里巴巴计算平台产品专家曲宁将通过一个完整简单的小例子为 ...

  2. FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe

    一.简述 ffprobe是ffmpeg命令行工具中相对简单的,此命令是用来查看媒体文件格式的工具. 二.命令格式 在命令行中输入如下格式的命令: ffprobe [文件名] 三.使用ffprobe查看 ...

  3. FFmpeg命令行工具学习(三):媒体文件转换工具ffmpeg

    一.简述 ffmpeg是一个非常强大的工具,它可以转换任何格式的媒体文件,并且还可以用自己的AudioFilter以及VideoFilter进行处理和编辑.有了它,我们就可以对媒体文件做很多我们想做的 ...

  4. Angular应用ng serve命令行的学习笔记

    在Angular项目下执行命令行ng serve --open: The ng serve command builds the app, starts the development server, ...

  5. Fmpeg命令行工具学习(三):媒体文件转换工具ffmpeg

    一.简述 ffmpeg是一个非常强大的工具,它可以转换任何格式的媒体文件,并且还可以用自己的AudioFilter以及VideoFilter进行处理和编辑.有了它,我们就可以对媒体文件做很多我们想做的 ...

  6. FFmpeg命令行工具学习(五):FFmpeg 调整音视频播放速度

    FFmpeg对音频.视频播放速度的调整的原理不一样.下面简单的说一下各自的原理及实现方式: 一.调整视频速率 调整视频速率的原理为:修改视频的pts,dts 实现: ffmpeg -i input.m ...

  7. 使用.Net Core编写命令行工具(CLI)

    使用.Net Core编写命令行工具(CLI) 命令行工具(CLI) 命令行工具(CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后 ...

  8. 《现代命令行工具指南》10. 管理工具:在隔离环境中安装和运行 Python 命令行工具 - Pipx

    ​好工具就是生产力,这是专栏<现代命令行工具指南>精讲的第 10 个命令行工具,欢迎品鉴. 很多强大的命令行工具都是用 Python 编写的,比如,poetry.trash-cli.bla ...

  9. win10 命令行工具cmd乱码解决方案及cmd非常用命令chcp介绍

    问题发生前景: 在使用好压压缩命令批量添加压缩文件的时候产生,中文路径或者文件名中文都是乱码,一堆问号.后来查了一些资料,发现命令行工具能够设置编码格式.具体操作如下: 在cmd或者powershel ...

  10. 通过命令行工具使用阿里云资源编排服务

    资源编排ROS 是一种简单易用的云计算资源管理和自动化运维服务.用户通过模板描述多个云计算资源的依赖关系.配置等,并自动完成所有资源的创建和配置,以达到自动化部署.运维等目的. 了解更多 通过命令行工 ...

最新文章

  1. Struts详细用法
  2. java 怎么比较两个日期_如何在Java中比较两个日期?
  3. POJ1015-Jury Compromise【01背包,dp】
  4. 炎炎夏日需要一个清凉的地 - 自制水冷系统(十一 指尖的思绪之程序篇)
  5. 信息学奥赛一本通C++语言——1125:矩阵乘法
  6. elasticsearch版本_折腾下Windows下的Elasticsearch安装与使用
  7. OSX下解决PIL的IOError: decoder jpeg not available 问题
  8. android 任意剪切view,Android 任意View切圆角
  9. Gatech OMSCS的申请和学习之奥妙
  10. InstallShield - Kevin Wan的博文索引
  11. Git merge分支到master
  12. 惠普136w墨粉量低_打印机墨粉量低怎么处理_打印机显示墨粉量低解决方法
  13. eSpeak: Linux文本转语音工具
  14. java lpad oracle_Oracle中Lpad函数和Rpad函数的用法
  15. 深圳礼品展上新“缤纷食品馆” 解锁员工福利新场景
  16. Word怎么在图片上制作一个简历封面?
  17. 打开word出现运行时错误‘-2147418113 (8000fff)‘的解决办法
  18. Excel与PowerBI 之PowerQuery 编辑界面异同-PowerQuery 系列文章之三
  19. 爆料 | 解析阿里妈妈如何将深度学习应用在广告、推荐及搜索业务
  20. ROS下的自主导航机器人软硬件设计

热门文章

  1. html 文字自动转大写
  2. 蓝色音箱改装电源_JBL便携/无线音箱排行榜,JBL便携/无线音箱十大排名推荐
  3. python图像处理(三)波形叠加模拟
  4. Gif动图如何裁剪?收下这个图片在线裁剪工具
  5. PLC控制系统怎么抗干扰
  6. [数字图像处理]模糊算法用于图像增强
  7. Spatial Transformer Networks(STN)-代码实现
  8. 有意思的前端代码收集
  9. 如何给pdf添加目录
  10. TotalControl连接问题