Fabric 身份的编码 x509 证书如下所示:
{"name":"user1","mspid":"Org1MSP","roles":null,"affiliation":"","enrollmentSecret":"","enrollment":{"signingIdentity":"3a18bb4555dc58717b0eaf658646ae3fd3cddf67af8b30c22880","identity":{"certificate":"-----BEGIN CERTIFICATE-----
MIICyzCCAnKgAwIBAgIUf52V2QcJWyKi2rK6FSvk/R4xnoIwCgYIKoZIzj0EA
czELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTD
biBGcmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVB
E2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNzE1MTAzODAwWhcNMjEwNzE1M
MzAwWjBgMS8wDAYDVQQLEwVhZG1pbjALBgNVBAsTBG9yZzEwEgYDVQQLEwtkZ
cnRtZW50MTEtMCsGA1UEAxMkMDAxY2EyYjEtYzY4OC0xMWVhLTk0ODItOWRlZ
MmY3MTQyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhpg1gJvE2pXahJm4d
EerQS3Z6qQ58UvFZx1l6Xa/PMeO/M1n7LUoU4BBFfrai+iH1rGDdkNFhkmfnC
lqOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAdBgNVHQ4EF
3j1nyj0qVHWpXHLlhLdrKCV+ek4wKwYDVR0jBCQwIoAg9KIF18lr4q4BA6CIq
qIpfKcbeWbm26XKFOZ5fLNQwgYYGCCoDBAUGBwgBBHp7ImF0dHJzIjp7ImhmL
ZmlsaWF0aW9uIjoib3JnMS5kZXBhcnRtZW50MSIsImhmLkVucm9sbG1lbnRJR
IjAwMWNhMmIxLWM2ODgtMTFlYS05NDgyLTlkZWZmMDJmNzE0MiIsImhmLlR5c
OiJhZG1pbiJ9fTAKBggqhkjOPQQDAgNHADBEAiBURkhpQzHNxEz1OzqAM+eYY
nmiw+bktNnpUEySSZwIgLkcmYhJ2tNTHGMe/ArkcRdyvY2fG8gO/UAU3FKbgD
-----END CERTIFICATE-----
"}}}
为了清楚起见,我已经\n
用换行符替换了。
如果您注意到它,那么您会发现 fields roles
, affiliation
,enrollmentSecret
的值要么是要么null
(""
空字符串)。
现在,这只是一个猜测,我可能错了,但我认为当我们尝试使用方法获取这些字段中的任何一个的值时getRoles
,getEnrollmentSecret
我们getAffiliation
会从我们拥有的证书中获取值本地目录或结构存储。
如果它们不提供任何有用的输出,我不知道为什么这些方法甚至首先出现在 SDK 中。
我遇到了一个类似的问题,我试图获取结构标识的enrollmentSecret 值,但得到的输出与您的输出相同,即一个空字符串。您可以在此处看到该线程,但是,我不确定您是否可以从中删除任何内容。
我观察到的一件事是,当我们使用 openssl 实用程序解码任何身份的 pem 证书时,我们得到了解码的 x509 证书。
openssl x509 -in user1 -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
3a:2e:95:d9:07:09:5b:22:a2:da:2b:e4:fd:1e:31:9e:82
Signature Algorithm: ecdsa-with-SHA256
Issuer: C=US, ST=California, L=San Francisco, O=org1.example.com, CN=ca.org1.example.com
Validity
Not Before: Jul 15 10:38:00 2020 GMT
Not After : Jul 15 10:43:00 2021 GMT
Subject: OU=admin, OU=org1, OU=department1, CN=user1
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:86:98:35:80:9b:c4:da:95:da:84:99:b8:76:33:
b0:11:ea:d0:4b:76:7a:a9:0e:7c:52:f1:59:c7:59:
e7:09:6b:0c:96
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Subject Key Identifier:
DE:3D:67:CA:3D:84:B7:6B:28:25:7E:7A:4E
X509v3 Authority Key Identifier:
keyid:F4:A2:05:14:BF:A8:8A:5F:29:C6:DE:59:B9:B6:E9:72:85:39:9E:5F:2C:D4
1.2.3.4.5.6.7.8.1:
{"attrs":{"hf.Affiliation":"org1.department1","hf.EnrollmentID":"user1","hf.Type":"admin"}}
Signature Algorithm: ecdsa-with-SHA256
30:44:02:20:54:46:48:69:43:31:cd:c4:4c:f5:3b:3a:80:33:
02:20:2e:47:26:62:12:76:b4:d4:c7:18:c7:bf:02:b9:1c:45:
dc:af:63:67:c6:f2:07:14:a6:e0:0f:98
我们可以分别以和的形式看到抽象语法符号 ASN.1( 1.2.3.4.5.6.7.8.1
) 中的从属关系和作用。hf.affiliation
hf.type
现在,除非我们解码 x509 证书并在我们的代码中从证书中读取这些值,否则我认为我们无法获得这些值。当然,如果您只想静态读取值,您可以使用fabric-ca-client
实用程序来执行此操作,但我假设这里不是这种情况。
在 SDK v1.4 中也遇到过这个问题。现在我不知道这是否是为了避免一些安全漏洞或其他什么而故意采取的行动,但奇怪的是,我从未见过任何结构维护人员对此发表评论。
在我的研究中,我发现这个人面临完全相同的问题的链接,但这也没有答案。