如何使用自动生成的 SSL 密钥将 HTTPS 请求正确发送到服务器?

How to correctly send HTTPS request to Server using auto-generated SSL keys?

我在 Node.js requests 方面需要一些帮助。 基本上我正在尝试将 HTTPS GET 请求发送到具有自签名证书的服务器。

我正在尝试两种方法,unirestrequest 模块。 下面是我正在使用的函数:

请求方式:

function sendCommand(command){
    request(IP + command, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body);
            return body;
        }
        else{
            console.log(command + " was not sent since an error occured!");
        }
    });
}

UniRest 方法:

function sendRequest(command){
  unirest.get(IP + command)
    .end(function(response) {
      var body = response.body;
      return body;
      done();
    });
}

在这两种情况下,我总是得到 undefined return 值,但是服务器在线并且 运行,可以通过以下方式轻松检查:https://3.16.143.68:8080

因为我在 SSH 中连接到服务器,所以我也可以从那里检查服务器状态:

PM2 列表输出:

pm2 列表 ┌────────┬──────┬──────┬────────┬────┬──────┬────────── ──┐ │ 名称 │ id │ 模式 │ 状态 │ ↺ │ cpu │ 内存 │ ├────────┼──────┼──────┼────────┼────┼──────┼──────── ──┤ │ 服务器 │ 0 │ 分叉 │ 在线 │ 0 │ 0% │ 50.8 MB │

当然浏览器会警告我们证书未签名,但我认为在发送请求时应该不会产生问题,我错了吗?

感谢您的帮助

节点默认启用证书验证。

您可以通过配置环境变量全局禁用它:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
request(IP + command, function (error, response, body) {
    // Handle response
});

或者您可以在发出请求时禁用验证:

var opts = {
    url: IP + command,
    agentOptions: {
        rejectUnauthorized: false
    }
};
request(opts, function (error, response, body) {
    // Handle response
});