使用curl -with --cert

时间:2016-04-05 15:47:06

标签: ssl curl certificate ssl-certificate

我正在使用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,克里斯蒂亚诺。

2 个答案:

答案 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