将 REST API 用于带有节点的 Jira

Using REST API for Jira with node

我想从私人安装的 Jira 服务器收集信息,但我在执行此操作时遇到了问题。

当然,我可以使用我的 Chrome 浏览器连接该站点,它还发现从浏览器地址栏调用 REST API - https://myjiraaddr/rest/api/2/search

使用 curl 发送 REST API 请求可以在命令行中使用 -u 选项(用户名:密码)。

但是如果我尝试使用 nodejs 并得到一个错误提示 self signed certificate in certificate chain.

谁能解释一下造成这些差异的原因以及解决方法?

提前致谢:)

JiraApi = require('jira').JiraApi;

var jira = new JiraApi('https', 'myjiraaddress', 443, 'username', 'password', '2.0.alpha1');

jira.getCurrentUser(function(error, issue) {
    console.log(error);
});

它打印...

Status: Error: self signed certificate in certificate chain

如果我使用 jira-client npm 包会出错...

RequestError: Error: self signed certificate in certificate chain
    at new RequestError (/Users/hyoon/dev/node/work-tracker/node_modules/request-promise-core/lib/errors.js:14:15)
    at Request.plumbing.callback (/Users/hyoon/dev/node/work-tracker/node_modules/request-promise-core/lib/plumbing.js:87:29)
    at Request.RP$callback [as _callback] (/Users/hyoon/dev/node/work-tracker/node_modules/request-promise-core/lib/plumbing.js:46:31)
    at self.callback (/Users/hyoon/dev/node/work-tracker/node_modules/request/request.js:185:22)
    at Request.emit (events.js:310:20)
    at Request.onRequestError (/Users/hyoon/dev/node/work-tracker/node_modules/request/request.js:877:8)
    at ClientRequest.emit (events.js:310:20)
    at TLSSocket.socketErrorListener (_http_client.js:426:9)
    at TLSSocket.emit (events.js:310:20)
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  cause: Error: self signed certificate in certificate chain
      at TLSSocket.onConnectSecure (_tls_wrap.js:1474:34)
      at TLSSocket.emit (events.js:310:20)
      at TLSSocket._finishInit (_tls_wrap.js:917:8)
      at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:687:12) {
    code: 'SELF_SIGNED_CERT_IN_CHAIN'
  },
  error: Error: self signed certificate in certificate chain
      at TLSSocket.onConnectSecure (_tls_wrap.js:1474:34)
      at TLSSocket.emit (events.js:310:20)
      at TLSSocket._finishInit (_tls_wrap.js:917:8)
      at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:687:12) {
    code: 'SELF_SIGNED_CERT_IN_CHAIN'
  },

如果您处理的是自签名证书,您可以通过将 strictSSL 选项设置为 false 来绕过严格检查,如 docs 中所述:

const jira = new JiraApi('https', 'myjiraaddress', 443, 'username', 'password', '2.0.alpha1', false, false);

如果您不想绕过检查,您可能必须分叉库并修改请求的设置方式才能添加您的证书。有关详细信息,请参阅此问题:How do I use the node.js request module to make an SSL call with my own certificate?