Express 通过HTTPS解锁帐户时出现禁止web3 HTTP访问错误

Express 通过HTTPS解锁帐户时出现禁止web3 HTTP访问错误,express,openshift,web3,quorum,Express,Openshift,Web3,Quorum,我正在构建一个快速应用程序,它试图在Quorum区块链中部署智能合约,该区块链运行在Openshift中 当我运行该应用程序时,它会尝试解锁一个帐户,以便与之部署合同 在这一步中,我得到以下错误: # UNLOCKED FAILED. Error: Returned error: account unlock with HTTP access is forbidden [0] at Object.ErrorResponse (/.../my-project/node_modules/we

我正在构建一个快速应用程序,它试图在Quorum区块链中部署智能合约,该区块链运行在Openshift

当我运行该应用程序时,它会尝试解锁一个帐户,以便与之部署合同

在这一步中,我得到以下错误:

# UNLOCKED FAILED.
Error: Returned error: account unlock with HTTP access is forbidden
[0]     at Object.ErrorResponse (/.../my-project/node_modules/web3-core-helpers/src/errors.js:29:16)
[0]     at /.../my-project/node_modules/web3-core-requestmanager/src/index.js:140:36
[0]     at XMLHttpRequest.request.onreadystatechange (/.../my-project/node_modules/web3-providers-http/src/index.js:96:13)
[0]     at XMLHttpRequestEventTarget.dispatchEvent (/.../my-project/node_modules/xhr2-cookies/dist/xml-http-request-event-target.js:34:22)
[0]     at XMLHttpRequest._setReadyState (/.../my-project/node_modules/xhr2-cookies/dist/xml-http-request.js:208:14)
[0]     at XMLHttpRequest._onHttpResponseEnd (/.../my-project/node_modules/xhr2-cookies/dist/xml-http-request.js:318:14)
[0]     at IncomingMessage.<anonymous> (/.../my-project/node_modules/xhr2-cookies/dist/xml-http-request.js:289:61)
[0]     at IncomingMessage.emit (events.js:327:22)
[0]     at endReadableNT (_stream_readable.js:1224:12)
[0]     at processTicksAndRejections (internal/process/task_queues.js:84:21)

我做错什么了吗?即使路由是安全的,到仲裁站的openshift网关是否也不安全?

最新的仲裁版本继承了上游行为,基于安全原因,它不允许通过HTTP-RPC解锁。有一个命令行标志--allow unsecure unlock,它可以在启动geth时传递,geth将重新允许此操作

这在此处的上游geth命令行选项中有描述:

(请注意,geth实际上不支持HTTPS,因此
HTTPS\u QUORUM\u ENDPOINT
必须实际使用HTTP,或者我猜它使用HTTPS连接到反向代理,然后通过HTTP-RPC端口连接到geth。)

const web3 = new Web3(HTTPS_QUORUM_ENDPOINT);

const account = (await web3.eth.getAccounts())[0];

await web3.eth.personal
      .unlockAccount(account, ACCOUNT_PASSWORD)
      .then((response) => {
        console.log("# UNLOCKED. OKAY.");
      })
      .catch((error) => {
        console.log("# UNLOCKED FAILED.");
        console.error(error);
      });