我正在使用cUrl使用他们发送给我的.cer证书从公司网站站点请求数据。 这是命令:
var getElement = document.getElementById('myID');
if (document.activeElement === getElement) {
$(document).keydown(function(event) {
if (event.which === 40) {
console.log('keydown pressed')
}
});
}
当我运行它时,我收到此错误消息:
卷曲:(58)无法加载PEM客户端证书,OpenSSL错误错误:0906D06C:PEM例程:PEM_read_bio:没有开始行,(找不到密钥,错误密码短语或wro ng文件格式?)
有没有人可以帮助我?
Tks,克里斯蒂亚诺。
答案 0 :(得分:7)
如果没有客户端私钥,则无法仅使用客户端证书连接到具有curl的TLS服务器。他们忘了向您发送私钥文件,或者,他们发送给您的不是客户端证书,而是用于验证的服务器证书。
我要尝试的第一件事是使用--cacert
代替--cert
。也就是说,告诉curl这是服务器的证书,卷曲可用于验证服务器是否是您认为的。
您也可以尝试删除--cert
而不使用--cacert
,您可能会收到服务器不受信任的错误。然后添加--insecure
参数,看看是否有效。我不会保留这个论点,因为那时你没有证据证明你在和谁说话。
我的猜测是它是服务器证书,使用--cacert
代替--cert
可以解决问题。
答案 1 :(得分:2)
我的猜测是您的证书文件是DER编码的二进制证书而不是base-64编码的证书。要将二进制转换为base-64,可以使用OpenSSL。
openssl x509 -inform der -in certificate.cer -out certificate.pem
我总是忘记所有参数并将以下网站加入书签,因为它提供了如何转换几乎任何证书格式的示例。 https://www.sslshopper.com/ssl-converter.html