Ruby Net::HTTP客户端证书请求抛出sslv3警报证书未知
我正在尝试向需要客户端证书身份验证的API端点发送POST请求。我有一个由Digicert签署的证书,并且API已配置为验证此证书 如果我提出这样的Ruby Net::HTTP客户端证书请求抛出sslv3警报证书未知,ruby,authentication,ssl,openssl,ssl-certificate,Ruby,Authentication,Ssl,Openssl,Ssl Certificate,我正在尝试向需要客户端证书身份验证的API端点发送POST请求。我有一个由Digicert签署的证书,并且API已配置为验证此证书 如果我提出这样的curl请求: curl -v --request POST --key ./key.pem --cert ./crt.pem --data '{"test": "message"}' https://my-secure-endpoint.com/path 请求成功crt.pem具有完整的证书包 现在,当我
curl
请求:
curl -v --request POST --key ./key.pem --cert ./crt.pem --data '{"test": "message"}' https://my-secure-endpoint.com/path
请求成功crt.pem
具有完整的证书包
现在,当我尝试使用Ruby发出相同的请求时,使用以下Net::HTTP代码(也尝试使用RestClient和HttpParty):
我们得到以下例外情况:
'connect_nonblock': SSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown (OpenSSL::SSL::SSLError)
当我使用Node(Superagent)时,它也能很好地工作:
Ruby版本:2.6.5p114
OpenSSL:1.0.2q
操作系统:macOS 10.15.6
'connect_nonblock': SSL_connect returned=1 errno=0 state=error: sslv3 alert certificate unknown (OpenSSL::SSL::SSLError)
const fs = require("fs");
const request = require("superagent");
var key = fs.readFileSync("key.pem"),
cert = fs.readFileSync("cert.pem");
request
.post("https://my-endpoint.com/path")
.key(key)
.cert(cert)
.then((res) => console.log(res.status));