Ошибка HTTP-доступа запрещена при разблокировке учетной записи по протоколу HTTPS

#express #openshift #web3 #quorum

#экспресс #openshift #web3js #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)
  

Однако конечной точкой моего узла кворума является https.

Вот код, вызывающий ошибку:

 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);
      });
  

Я делаю что-то не так? Может ли быть так, что шлюз openshift к модулю кворума не защищен, хотя маршрут защищен?

Ответ №1:

последняя версия quorum наследует поведение восходящего потока, при котором он запрещает разблокировку через HTTP-RPC по соображениям безопасности. Существует флаг командной строки --allow-insecure-unlock , который может быть передан при запуске geth, который повторно разрешит это.

Это описано в параметрах командной строки geth здесь: https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options

(Обратите внимание, что geth фактически не поддерживает HTTPS, поэтому HTTPS_QUORUM_ENDPOINT на самом деле он должен использовать HTTP, или я предполагаю, что он использует HTTPS для подключения к обратному прокси, который затем подключается к geth через порт HTTP-RPC.)