首页 > 解决方案 > NodeJS - HTTPS POST请求不适用于Got客户端

问题描述

我正在尝试使用 Got 客户端发出 HTTPS Post 请求。端点需要带有客户端证书的 TLS。这是我的请求的样子:

await got.post('https://example.com/some-entity/', {
                json: requestPayload,
                headers: {
                    Authorization: 'some token'
                },
                https: {
                    certificate: fs.readFileSync('sslfile.cert.pem'),
                    key: fs.readFileSync('sslfile.key.pem'),
                    passphrase: 'passphrase',
                    rejectUnauthorized: false // only for local dev. would be true in prod
                },
                responseType: 'json'
            });

但我收到以下错误:

write EPROTO 139745222879040:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../deps/openssl/openssl/ssl/record/rec_layer_s3.c:1544:SSL alert number 40\n

我正在关注这个Got 文档。

我已经确认证书和密钥是好的,因为邮递员和 curl 的请求相同。如果我使用不同的 Javascript 客户端(如Request.

有人知道我在这里做错了什么吗?

标签: node.jshttps

解决方案


想通了这个问题。我使用的是旧版本的 Got(9.6.0)。将我的 Got 版本升级到 11.8.0 后它运行良好。


推荐阅读