Rails アプリは Net::HTTP を介して別のサーバーにリクエストを送信しますが、次のエラーが表示されます。
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
私は周りを見回して、以下に示すように追加しようhttp.ca_path
としました:http.ca_file
uri = URI.parse("https://#{host}/#{path}")
args = {:encrypted_credit_card_number => order.billing_info.card_number,
:expiration_date => order.billing_info.authorize_expiration_date.to_s,
:cvv => order.billing_info.cvv.to_s,
}
http = Net::HTTP.new(uri.host, uri.port)
http.ca_path = '/etc/ssl/certs'
http.ca_file = "/etc/ssl/certs/ca-certificates.crt"
http.use_ssl = true #Enabling SSL
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if Rails.env.development? || Rails.env.test? || Rails.env.cucumber?
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(args)
response = http.request(request)
final_response = eval(response.body)
ただし、この行でもエラーが発生しますresponse = http.request(request)
。ubuntuでこれに対する解決策を知っている人はいますか? このサーバーでは RVM を使用していないため、RVM を使用しないソリューションが必要です。
======
解決策を見つけたかもしれないと思いますが、それを実装する方法がわかりません。したがって、このサイト: http://railsapps.github.io/openssl-certificate-verify-failed.htmlには、「Solution for Ubuntu」セクションがあります。そして、これへのダウンロードへのリンクがあります: https://launchpad.net/ubuntu/+source/openssl/1.0.1-4ubuntu5。しかし、端末からしかサーバーにアクセスできない場合、ファイルをダウンロードして実行するにはどうすればよいですか?
openssl をインストールしようとしています (既に存在しているように見えますか?):
emai@web1:~$ sudo apt-get install openssl ca-certificates
[sudo] password for emai:
Reading package lists... Done
Building dependency tree
Reading state information... Done
ca-certificates is already the newest version.
openssl is already the newest version.
The following packages were automatically installed and are no longer required:
libxxf86dga1 x11-utils libxxf86vm1 xterm libgl1-mesa-dri libxcb-glx0 libgl1-mesa-glx libx11-xcb1 libglapi-mesa xbitmaps libxaw7 libxmu6 libxpm4 libfontenc1 libxtst6 libutempter0 tk8.5
libxcb-shape0 libxv1 libllvm3.0
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 24 not upgraded.