Ruby Net::HTTP的客户端证书问题(既不是PUB密钥也不是PRIV密钥::嵌套asn1错误)
我正在使用Cucumber测试一个系统,其中一部分涉及使用SSL客户端证书在远程.NET服务器上进行身份验证。此.NET系统的开发人员以.pem文件的形式向我提供了此证书,如下所示: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
-----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