Failed to enroll admin, error:%o message=Calling enroll endpoint failed, CONNECTION Timeout

Failed to enroll admin, error:%o message=Calling enroll endpoint failed, CONNECTION Timeout

我是 运行 我在 kubernetes 上的结构网络,我已经为所有组织设置了 ca 服务器。我可以从 cli 注册和注册用户,但是当我使用 fabric-ca-client 库和 nodejs 注册和注册时用户。我正面临连接超时问题,同时如果我查看我的 ca-server 的日志,它会显示能够处理请求。 Edit1:我正在使用 fabric-sample 中提供的相同代码来注册和登记用户。

所有 pods 都在使用 kubernetes 中的这些服务相互通信

这是我的连接配置文件的样子

"certificateAuthorities": {
    "ca-org2": {
        "url": "https://ca-org2:8054",
        "caName": "ca-org2",
        "tlsCACerts": {
            "pem": ["-----BEGIN CERTIFICATE-----\nMIICBjCCAa2gAwIBAgIUHwBYatG6KhezYWHxdGgYGqs77PIwCgYIKoZIzj0EAwIw\nYDELMAkGA1UEBhMCVUsxEjAQBgNVBAgTCUhhbXBzaGlyZTEQMA4GA1UEBxMHSHVy\nc2xleTEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEQMA4GA1UEAxMHY2Etb3Jn\nMjAeFw0yMTAzMjAxMDI4MDBaFw0zNjAzMTYxMDI4MDBaMGAxCzAJBgNVBAYTAlVL\nMRIwEAYDVQQIEwlIYW1wc2hpcmUxEDAOBgNVBAcTB0h1cnNsZXkxGTAXBgNVBAoT\nEG9yZzIuZXhhbXBsZS5jb20xEDAOBgNVBAMTB2NhLW9yZzIwWTATBgcqhkjOPQIB\nBggqhkjOPQMBBwNCAAQUIABkRhfPdwoy2QrCY3oh8ZuzP5OprZJawVXO2ojid3j4\nC9W4l46QXR5J7iG5MLczguPZWB9dZWygRQdUQeoAo0UwQzAOBgNVHQ8BAf8EBAMC\nAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAdBgNVHQ4EFgQURx/h3nkH0fq+3TlRPnQW\nWTHbR7YwCgYIKoZIzj0EAwIDRwAwRAIgCF+vcLFERb+VHa6Att0rh5yhpMd0bHEn\nmkNo0YfKuX4CICodtpp6AKtNWXreskaN+kRMH8eDmwvxkhvTK68ejv8U\n-----END CERTIFICATE-----\n"]
        },
        "httpOptions": {
            "verify": false
        }
    }
}

我找到了这个问题的解决方案。该问题与连接超时有关,我的 CA 服务器正在接收请求并能够处理它们,但由于超时时间短,请求被取消了。解决方案是增加 connection timeoutrequest-timeout。超时的默认值为 3 秒,我将其增加到 30 秒,它开始工作了。默认配置可见here

{
    "request-timeout" : 3000,
    "tcert-batch-size" : 10,
    "crypto-hash-algo": "SHA2",
    "crypto-keysize": 256,
    "crypto-hsm": false,
    "connection-timeout": 3000
}

我们可以从 fabric-ca-client 库的源代码更新超时值,或者简单地使用 fabric-common 库的方法来更新这些配置值。

const { Utils: utils } = require('fabric-common');
const path=require('path');
let config=utils.getConfig()
config.file(path.resolve(__dirname,'config.json'))

这里是我们修改后的配置文件config.json

  {
  "request-timeout" : 30000,
  "tcert-batch-size" : 10,
  "crypto-hash-algo": "SHA2",
  "crypto-keysize": 256,
  "crypto-hsm": false,
  "connection-timeout": 30000
  }