2015-11-12 4 views
2

У меня есть сервер API Rails, размещенный на Heroku, что делает асинхронный запрос POST URL-адресу обратного вызова, указанному в первоначальном запросе API клиентом.OpenSSL :: SSL :: SSLError: SSL_connect return = 1 errno = 0 state = error: не удалось проверить сертификат

У меня возникли проблемы, когда я пытаюсь отправить POST на один из веб-клиентов моего клиента через SSL.

connection = Faraday::Connection.new('https://subdomain.some_client.com', ssl: { ca_file: '/usr/lib/ssl/certs/ca-certificates.crt' }) 
connection.get '/test' 

Следующая выдает ошибку:

Faraday::Error::ConnectionFailed: SSL_connect returned=1 errno=0 state=error: certificate verify failed 

Однако, если я отправляю к другому серверу через HTTPS, например, Google, он работает отлично

connection = Faraday::Connection.new('https://www.google.com', ssl: { ca_file: '/usr/lib/ssl/certs/ca-certificates.crt' }) 
connection.get '/' 

Означает ли это неисправность находится в конфигурации SSL клиента? и если да, то как я могу помочь им в отладке проблемы?

UPDATE:

Я Curl POST на веб-приложение клиента без проблем, это только тогда, когда я делаю это через библиотеки HTTP рубина он не

высоко ценится Благодаря

ответ

2

Я предполагаю, что там это проблема с сертификатом SSL для веб-приложения вашего клиента. Возможно, есть устаревший или недействительный сертификат. Вы можете попробовать this answer.

Если вам нужно обойти это (но, вероятно, не очень хорошее постоянное решение, из-за потенциальной дыры в безопасности), вы должны иметь возможность отключить проверку сертификата, поставив это перед Bundler.require в своем приложении.rb:

require 'openssl' 
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 
+0

Я попробовал это, и это работает, но это, очевидно, не подходит для производственной среды – Tarlen

+0

Этот тест показывает вам не хватает промежуточный или корневой сертификат в файле ча-certificates.crt. Вам все еще нужен ответ? –

Смежные вопросы

 Смежные вопросы