Самозаверяющий сертификат в цепочке сертификатов Ошибка при использовании node.js SDK для watson assistant - PullRequest
0 голосов
/ 20 декабря 2018

Я использую IBM Watson API и его node.js SDK.Проблема, с которой я сталкиваюсь, состоит в том, что вызов API Watson с использованием SDK node.js всегда возвращает мне следующую ошибку.

{ Error: self signed certificate in certificate chain
    at TLSSocket.onConnectSecure (_tls_wrap.js:1049:34)
    at TLSSocket.emit (events.js:182:13)
    at TLSSocket._finishInit (_tls_wrap.js:631:8) code: 
'SELF_SIGNED_CERT_IN_CHAIN' }

Я пытался установить ssl-strict false и process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; но без удачи.

var watson = require('watson-developer-cloud');

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

var assistant = new watson.AssistantV1({
  iam_apikey: 'API-KEY',
  version: '2018-09-20',
  url: 'URL'
});

assistant.message({
  workspace_id: 'WORKSPACE-ID',
  input: {'text': 'Input-Text'},
},  function(err, response) {
  if (err)
    console.log('error:', err);
  else
    console.log(JSON.stringify(response, null, 2));
});

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Временно я нашел следующий обходной путь.

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

var assistant = new watson.AssistantV1({
  iam_apikey: YOUR-API-KEY,
  version: '2018-09-20',
  url: YOUR-URL,
  disable_ssl_verification: true
});

Здесь, установка disable_ssl_verification в true добилась цели, хотя я не верю, что этопостоянный способ двигаться вперед.

0 голосов
/ 27 декабря 2018

Пожалуйста, не используйте process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";.Этот параметр влияет не только на SDK IBM Watson Node.js, но и на все ваше приложение.

Мы добавили в конструктор специальную переменную для работы с серверами, использующими самозаверяющий сертификат.disable_ssl_verification влияет только на используемую нами библиотеку HTTP request.

var assistant = new watson.AssistantV1({
  iam_apikey: 'YOUR-API-KEY',
  version: '2018-09-20',
  url: 'YOUR-URL',
  disable_ssl_verification: true
});
0 голосов
/ 20 декабря 2018

URL и iam_apikey в коде неверны:

var assistant = new watson.AssistantV1({
  iam_apikey: 'API-KEY',
  version: '2018-09-20',
  url: 'URL'
});

В моем примере кода здесь https://github.com/IBM/watson-assistant-app-connect Инициализация:

const AssistantV1 = require('watson-developer-cloud/assistant/v1');

const assistant = new AssistantV1({
  url: 'https://gateway.watsonplatform.net/assistant/api',
  version: '2018-02-16'
});

Он подхватитключ API от переменной окружения ASSISTANT_IAM_APIKEY.

...