NodeJS: Handshake Failure: SSL Alert number 40当使用Axios向AWS L



我正在使用无服务器框架开发一个web应用程序,为了使用某些服务,我需要验证用户是否有活动会话。为此,我使用部署在AWS lambda上的lambda来验证登录,并使用axios在每个服务中以以下方式对其进行调用:

module.exports.handler = async (event) => {
try {
// Get request headers from the event
const options = {
headers: event.headers,
};

// Send a request to the verify-user-login endpoint to check if the user is authenticated
const http = axios.create({ baseURL: "https://**********.execute-api.us-east-1.amazonaws.com/" })
const responseStatus = await http.get("dev/verify-user-login", options)
.then(async (response) => {

但是在执行请求之前失败,并显示下一个错误消息:

AxiosError: write EPROTO 18440:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:c:wsdepsopensslopensslsslrecordrec_layer_s3.c:1546:SSL alert number 40

当我尝试从邮递员做同样的请求时,它工作得很好。此外,当我从Axios执行相同的请求时,但在本地主机上使用verify -user-login lambda,它也可以工作。

根据我的理解,这个错误表明SSL/TLS配置有问题,所以我尝试使用自定义SSL配置如下:

const agent = new https.Agent({
secureProtocol: 'TLSv1_2_method', // Use TLSv1.2
ciphers: 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384', // Use multiple cipher suites
});

我希望至少解决SSL/TLS的问题,但我遇到了同样的错误。

即使在尝试使用fetch和自定义代理禁用握手失败时,我也得到了相同的错误。我正在使用节点v18.17.1 (LTS)和next 13,只有在使用主机头

时才会发生这种情况
const httpsAgent = new https.Agent({
rejectUnauthorized: false,
});
const response = await fetch(myApiURL,
{
method: 'GET',
headers: {
//headers
'Content-Type': 'application/json',
'Host': 'myapi.com',

},
agent: httpsAgent
});

我最近也遇到了同样的问题。然而,使用node:httpsfetch,请求都成功完成。

相关内容

  • 没有找到相关文章

最新更新