Mar*_*loJ 3 ruby curl openssl ruby-on-rails rest-client
我在尝试使用在ruby上有密码的证书时遇到了很多麻烦.我正在使用rest-client,但这不是必需的.
这是我需要进行的cURL等效调用:
curl -E certificate.pem:PASSWORD -d ident=language -d data="test" "https://theurl"
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,但我无法让密码部分工作.这是我到目前为止所拥有的:
cert = OpenSSL::X509::Certificate.new(File.read("#{RAILS_ROOT}/certificate.pem"))
reply = RestClient.post("https://theurl", {:ident => 'language', :data => 'test'}, {:ssl_client_cert => cert})
Run Code Online (Sandbox Code Playgroud)
我已经尝试将密码放在任何地方,如:密码和:ssl_client_key,我查看了我能找到的所有文档但是没有任何地方可以接受这个密码.
这是我总是得到的错误:
SSL_connect returned=1 errno=0 state=SSLv3 read finished A: sslv3 alert handshake failure
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
使用带有选项-E的curl的方式是指定带有证书的私钥.
(来自cURL手册页)
-E/ - 证书
(SSL)告知curl在使用HTTPS,FTPS或其他基于SSL的协议获取文件时使用指定的客户端证书文件.证书必须采用PEM格式.如果未指定可选密码,将在终端上查询.请注意,此选项假定"证书"文件是私钥,并且私有证书连接在一起!请参见--cert和--key以单独指定它们.
因此,为了与RestClient做同样的事情,您可以尝试使用ssl_client_key选项.喜欢:
:ssl_client_key => OpenSSL::PKey::RSA.new(File.read("key.pem"), "passphrase, if any"),
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5387 次 |
最近记录: |