1

Rails gemを更新すると、次のエラーが発生します(本番環境でのみ、開発環境で正常に機能しています)。

Curl::Err::SSLCACertificateError

これはSSL認証局のエラーのようですが、なぜ本番環境でのみ機能しないのでしょうか。そして、私は問題を解決するために何ができますか?

私の縁石の宝石はv.0.8.3で、レールは3.2.8です(市長の更新は熊手でしたが、現在はv.10.0.2ですが、これが縁石の宝石の良好な動作に影響するかどうかはわかりません)。

参考までに、これはエラーを発生させるコードです:

    loginData = { :login => "myuser", :password => "mypass" }
    loginJson = ActiveSupport::JSON.encode(loginData)

    req = Curl::Easy.http_post("https://mysite.com", loginJson
    ) do |curl|
        curl.headers['Content-type'] = 'application/json'
    end
4

2 に答える 2

3

サーバーで自己署名SSL証明書を使用しているようですが、これで問題ありません。私は内部サービスについても同じことをします。クライアントにカスタムSSL証明書も認識させて、信頼できることをクライアントに認識させたいだけです。

このような何かがトリックを行う必要があります:

req = Curl::Easy.http_post("https://mysite.com", loginJson) do |curl|
  curl.headers['Content-type'] = 'application/json'
  curl.cacert = "/path/to/ca.crt"
  curl.cert = "/path/to/cert.pem"
end

もちろん、これらの文字列定数を構成ファイルに抽出することをお勧めします。

于 2013-05-10T17:38:48.170 に答える
2

私は別の解決策を見つけました。「カール」を要求するとき、私はこの追加の妥当性を置きます:

 curl.ssl_verify_peer = false

セキュリティの観点から最善の解決策かどうかはわかりませんが、今のところは機能します...

于 2012-11-29T23:21:15.500 に答える