2012-02-06 2 views
1

외부 API의 SSL 연결을 통해 JSON 데이터를 가져오고 구문 분석하는 레이크 작업이 있습니다.SSLCaertBadFile 오류 heroku 억제

내가 설치이 외부 API를 래핑 보석을 사용하여 로컬로 실행 아무 문제가 없지만, #<Curl::Err::SSLCaertBadFile: Curl::Err::SSLCaertBadFile>

와 Heroku가에 실행할 때 작업이 실패 피기 백 SSL, 애드온이 문제를 해결할 수있는 희망하지만, 주사위도 없다.

아이디어가 있으십니까?

request.ssl_verify_peer 
request.ssl_verify_host 

내가 SSL 정확히 알고에 대해 충분히 알고하지 않습니다

UPDATE

나는 이전에 다음과 같은 두 개의 필드가 설정 한 컬 요청에 SSL 인증을 사용하지 않도록 설정하여 그것을 해결하기 위해 관리 왜 오류가 영웅 환경에서 이러한 설정으로 인해 발생했는지 또는 보안을 약화시키는 것의 의미는 무엇입니까?

답변

2

인증서 확인을 사용하지 않는 것은 좋지 않습니다. 해당 주제에 대한 자세한 내용은 http://www.rubyinside.com/how-to-cure-nethttps-risky-default-https-behavior-4010.html, http://jamesgolick.com/2011/2/15/verify-none..html 및 관련 참조를 참조하십시오.

HTTP 클라이언트가 heroku에서 CA 인증서 번들을 어디에서 찾을 수 없는지 문제가 있습니다.

Faraday.new "https://example.com", ssl: { ca_path: "/etc/ssl/certs" } 

행운을 빕니다 : 여기 Faraday를 사용하는 예입니다

require "net/https" 
require "uri" 

root_ca_path = "/etc/ssl/certs" 

url = URI.parse "https://example.com" 
http = Net::HTTP.new(url.host, url.port) 
http.use_ssl = (url.scheme == "https") 

if (File.directory?(root_ca_path) && http.use_ssl?) 
    http.ca_path = root_ca_path 
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER 
    http.verify_depth = 5 
end 

request = Net::HTTP::Get.new(url.path) 
response = http.request(request) 

:

현재 사용하고있는 클라이언트 언급하지 않지만이 Heroku가에 net/https를 사용하는 예입니다.

+0

나는 어떤 클라이언트가 이전에 사용했는지 확실하지 않지만 패러데이로 업데이트되어 문제가 없어져서 인증서 검사를 다시 사용하도록 설정했습니다. 감사합니다. – manafire