【问题标题】:Hyperledger Fabric CA: x509: certificate is valid for rca-ord, not localhostHyperledger Fabric CA:x509:证书对 rca-ord 有效,而不是 localhost
【发布时间】:2019-05-10 06:48:38
【问题描述】:

我们在 docker-compose.yml 中使用以下设置启动了一个 fabric-ca-server 实例

version: '2'

networks:
  test:

services:

  myservice:
    container_name: my-container
    image: hyperledger/fabric-ca
    command: /bin/bash -c "fabric-ca-server start -b admin:adminpw"
    environment:
      - FABRIC_CA_SERVER_HOME=/etc/hyperledger/fabric-ca
      - FABRIC_CA_SERVER_TLS_ENABLED=true
      - FABRIC_CA_SERVER_CSR_CN=rca-ord
      - FABRIC_CA_SERVER_CSR_HOSTS=rca-ord
      - FABRIC_CA_SERVER_DEBUG=true
    volumes:
      - ./scripts:/scripts
      - ./data:/data
    networks:
      - test
    ports:
      - 7054:7054

但是当我们尝试使用以下命令向该服务器注册用户时:

root@fd85cc416f52:/# fabric-ca-client enroll -u https://user:userpw@localhost:7054 --tls.certfiles $FABRIC_CA_SERVER_HOME/tls-cert.pem

我们得到以下错误:

2018/12/08 22:18:03 [INFO] TLS Enabled
2018/12/08 22:18:03 [INFO] generating key: &{A:ecdsa S:256}
2018/12/08 22:18:03 [INFO] encoded CSR
Error: POST failure of request: POST https://localhost:7054/enroll
{"hosts":["fd85cc416f52"],"certificate_request":"-----BEGIN CERTIFICATE REQUEST-----\nMIIBQDCB6AIBADBcMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xp\nbmExFDASBgNVBAoTC0h5cGVybGVkZ2VyMQ8wDQYDVQQLEwZGYWJyaWMxDTALBgNV\nBAMTBHVzZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATREdPvOeaWG9TzaEyk\nhFXRnJFJouDXShr0D1745bCt/0n3qjpqviZiApd1t62VrpMX0j8DBa6tkF7C+rEr\nRvwnoCowKAYJKoZIhvcNAQkOMRswGTAXBgNVHREEEDAOggxmZDg1Y2M0MTZmNTIw\nCgYIKoZIzj0EAwIDRwAwRAIgASXupobxJia/FFlLiwYzYpacvSA6RiIc/LR/kvdB\nT8ICIA1nJ2RfHrwMhOWocxMAIuLUsBvKS3S5DIwCHp0/gBpn\n-----END CERTIFICATE REQUEST-----\n","profile":"","crl_override":"","label":"","NotBefore":"0001-01-01T00:00:00Z","NotAfter":"0001-01-01T00:00:00Z","CAName":""}: Post https://localhost:7054/enroll: x509: certificate is valid for rca-ord, not localhost

在服务器端,我们可以看到发送请求时打印出以下消息:

my-container | 2018/12/08 22:18:03 http: TLS handshake error from 127.0.0.1:56518: remote error: tls: bad certificate

我们也试过了:

root@fd85cc416f52:/# ls $FABRIC_CA_SERVER_HOME
IssuerPublicKey  IssuerRevocationPublicKey  ca-cert.pem  fabric-ca-server-config.yaml  fabric-ca-server.db  msp  tls-cert.pem
root@fd85cc416f52:/# fabric-ca-client enroll -u https://user:userpw@localhost:7054 --tls.certfiles $FABRIC_CA_SERVER_HOME/ca-cert.pem

结果相同

想知道是否有人可以帮助我们这里出了什么问题,我们该如何解决?谢谢

【问题讨论】:

    标签: hyperledger-fabric-ca


    【解决方案1】:

    您已使用FABRIC_CA_SERVER_CSR_HOSTS=rca-ord 在服务器上生成了 TLS 证书,但随后您将请求发送到您在注册命令中指定的 URL 中的localhost

    要使其正常工作,您应该将环境变量更改为也包含“localhost”。例如:FABRIC_CA_SERVER_CSR_HOSTS=rca-ord,localhost

    删除旧的 TLS 证书并生成一个新证书,它应该可以工作。

    【讨论】:

    • 试过了,还是不行。这次的错误是 my-container | 2018/12/19 21:53:09 [INFO] 127.0.0.1:57750 POST /enroll 401 23 “无法获取用户::scode:404,代码:63,消息:无法获取用户:sql:没有行结果集”。为什么我们第一次要求它注册一个用户时它试图获取用户?
    • 这似乎是一个单独的问题。添加本地主机已经解决了您原始帖子所涉及的 TLS 握手错误。
    • @morpheus 你找到解决方案了吗?我面临certificate is valid for rca-ord, not localhost 的同样问题
    • 我在docker-compose.yaml 文件的ca-server 部分下添加了FABRIC_CA_SERVER_CSR_HOSTS,但它不起作用。我还没有生成新的证书。
    • @alpha 生成新证书并确保证书中的 SAN(主题备用名称)与您用于连接服务器的字符串匹配。请参阅stackoverflow.com/a/5937270/147530:更新:根据 2011 年发布的 RFC 6125,验证器必须首先检查 SAN,如果 SAN 存在,则不应检查 CN。
    猜你喜欢
    • 2019-07-16
    • 2022-10-17
    • 1970-01-01
    • 2022-11-06
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2019-02-15
    相关资源
    最近更新 更多