古老的问题,但对那些登陆这里的人有所帮助。没有专家。请咨询您当地的安全专家,不可以。
Axios是一个http(s)客户端,并且http客户端通常匿名参与TLS。换句话说,服务器接受他们的连接,而不标识谁在尝试连接。这与互助TLS(Mutual
TLS)不同,在服务器和客户端之间完成握手之前,相互验证。
互联网是一个令人恐惧的地方,我们希望保护我们的客户避免连接到欺骗性的公共端点。为此,我们确保客户在发送任何私有数据之前先识别服务器。
// DO NOT DO THIS IF SHARING PRIVATE DATA WITH SERVICEconst httsAgent = new https.Agent({ rejectUnauthorized: false });这通常作为关于任何语言的https客户端连接失败的答案发布在StackOverflow上(并且更令人反感)。更糟糕的是,它通常可以正常工作,可以解除开发人员的封锁,而他们会继续前进。但是,尽管他们一定进入了门,但它是谁的门?由于他们选择不验证服务器的身份,因此,可怜的客户端无法知道他们刚刚与公司的Intranet建立的连接是否有不良行为者在监听。
如果服务具有公共SSL证书,则
https.Agent通常不需要进一步配置,因为您的操作系统提供了一组公用的公共信任的CA证书。通常,这是您的浏览器配置为使用的同一套CA证书,这就是默认axios客户端可以大惊小怪地访问https://google.com的原因。
如果该服务具有专用SSL证书(出于测试目的而自行签名,或者由公司的专用CA签名以保护其内部机密),则必须将https代理配置为信任用于签署服务器证书的专用CA:
const httpsAgent = new https.Agent({ ca: MY_CA_BUNDLE });其中
MY_CA_BUNDLE是
.pem格式的CA证书数组。



