NodeJs发起https请求报错:certificate has expired
在Node开发项目过程中,我们很有可能需要请求外部地址,以此调用外部功能接口或拉取外部数据。通常我们会使用https来保证通信过程安全,这里当我们用NodeJs发起https请求时却提示:certificate has expired错误。
如何解决
1.简单粗暴的方式,设置环境变量,将下面的代码添加到你的文件顶部:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
注意:这种方式是有问题的,会让NodeJs不拒绝未认证的证书
2.设置请求options的rejectUnauthorized为false,忽略证书安全
http.request(path,{
rejectUnauthorized:false
})
3.导出你的证书文件(XXX.key和XXX.pem)发起请请求时指定使用请求目标地址的证书:
let express = require("express");
let https = require("https");
let fs = require("fs");
// 配置
const httpsOption = {
key : fs.readFileSync("./path/XXX.key"),
cert: fs.readFileSync("./path/XXX.pem")
}
https.createServer(httpsOption, app).listen(443);