Сертификат x509, закодированный для удостоверения Fabri c, выглядит примерно так:
{"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
символом новой строки только для ясности.
Если вы заметили это, тогда вы обнаружите, что значения полей roles
, affiliation
, enrollmentSecret
равны null
или ""
(пустая строка).
Теперь это просто предположение, и я могу ошибаться в этом, но я думаю, что когда мы пытаемся получить значение любого из этих полей с помощью методов getRoles
, getEnrollmentSecret
, getAffiliation
, мы получаем значение из сертификата, который мы ' ve в нашем локальном каталоге или fabri c -store.
Я не знаю, почему эти методы вообще присутствуют в SDK, если они не обеспечивают полезного вывода.
Я столкнулся с аналогичной проблемой, когда я пытался получить значение enrollmentSecret идентификатора fabri c, но получил тот же результат, что и вы, - пустую строку. Вы можете увидеть этот поток здесь , но я не уверен, что вы можете от него что-нибудь отнять.
Я заметил одну вещь: когда мы декодируем сертификат pem любого идентификатора с помощью утилиты openssl, и мы получаем декодированный сертификат 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 как хорошо. Теперь я не знаю, было ли это преднамеренное действие, чтобы предотвратить некоторую ошибку безопасности fl aws или что-то еще, но, как ни странно, я никогда не видел, чтобы кто-либо fabri c комментировал это.
В моем исследовании , Я нашел эту ссылку , где человек столкнулся с той же проблемой, но и на нее нет ответа.