我正在尝试使用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
我正在关注this文档。
我确认证书和密钥是好的,因为邮递员和curl的要求相同。如果我使用其他Request
之类的Javascript客户端,它甚至可以工作。
有人知道我在这里做错了吗?
答案 0 :(得分:0)
解决了这个问题。我使用的是旧版本的 Got(9.6.0)。将我的 Got 版本升级到 11.8.0 后,它运行良好。