Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Net::HTTP的客户端证书问题(既不是PUB密钥也不是PRIV密钥::嵌套asn1错误)_Ruby_Https_Openssl_Client Certificates_Net Http - Fatal编程技术网

Ruby Net::HTTP的客户端证书问题(既不是PUB密钥也不是PRIV密钥::嵌套asn1错误)

Ruby Net::HTTP的客户端证书问题(既不是PUB密钥也不是PRIV密钥::嵌套asn1错误),ruby,https,openssl,client-certificates,net-http,Ruby,Https,Openssl,Client Certificates,Net Http,我正在使用Cucumber测试一个系统,其中一部分涉及使用SSL客户端证书在远程.NET服务器上进行身份验证。此.NET系统的开发人员以.pem文件的形式向我提供了此证书,如下所示: -----BEGIN CERTIFICATE----- MIIFzTCCBLWgAwIBAgIKHNfvKAAAAAAAFDANBgkqhkiG9w0BAQUFADBKMRMwEQYK ...more lines... aaG0c6enKQJiVcA4myLkBkN/wxiZsnBy

我正在使用Cucumber测试一个系统,其中一部分涉及使用SSL客户端证书在远程.NET服务器上进行身份验证。此.NET系统的开发人员以.pem文件的形式向我提供了此证书,如下所示:

    -----BEGIN CERTIFICATE-----
    MIIFzTCCBLWgAwIBAgIKHNfvKAAAAAAAFDANBgkqhkiG9w0BAQUFADBKMRMwEQYK
    ...more lines...
    aaG0c6enKQJiVcA4myLkBkN/wxiZsnBy/zGdj+u4RurxcS717FKm7oYY3JsuRSRH
    Ow==
    -----END CERTIFICATE-----
我用于连接的代码如下所示(摘自):

但是,行“http.key=OpenSSL::PKey::RSA.new(pem)”引发以下异常:

    Neither PUB key nor PRIV key:: nested asn1 error (OpenSSL::PKey::RSAError)
我最初使用HttpParty发出请求,但遇到了相同的问题,我追踪到HttpParty本身的基本相同行

似乎我得到的这个证书可以很高兴地传递到OpenSSL::X509::certificate.new中,以创建证书对象,但它不能用于创建OpenSSL::PKey::RSA的实例。我尝试删除设置密钥的行,但身份验证失败。这可能是事实上我应该做的,身份验证由于其他原因失败,但在我开始挖掘其他地方的问题之前,我需要更清楚地了解这里发生了什么

从这个问题: ... 似乎私钥应该以某种方式包含在pem文件中,但.NET开发人员似乎认为这是不必要的


事实证明,要让.NET开发人员清楚地了解他们的身份验证工作原理是很困难的,而且我似乎也无法在网上找到明确的信息。有人能解释一下吗?

好的,在发布这篇文章的34分钟内,我已经弄明白了

我使用的pem文件也应该包含一个私钥。我从.NET的家伙那里获得了一个受密码保护的.pfx文件,并生成了我自己的pem,如下所示:

openssl pkcs12 -in cert.pfx -out cert.pem -nodes
这个文件包含证书和私钥,现在一切正常

openssl pkcs12 -in cert.pfx -out cert.pem -nodes