У меня есть несколько вопросов относительно развертывания приложения Rails с сертификатом SSL.
Фон:
- Рельсы 3.2.16 / Руби 1.9.3
- SSL-сертификат SAN, подписанный внутренним сервером ЦС Windows
- Приложение развернуто на серверах Ubuntu 12.04 с помощью Apache/Passenger.
Согласно https://gist.github.com/fnichol/867550, клиенты Windows, использующие Ruby net/http не доверяйте сертификату на серверах Ubuntu. Я предполагаю, что это связано с тем, что переменная среды SSL_CERT_FILE не установлена (несмотря на то, что внутренние корневые сертификаты установлены на серверах Ubuntu и развернуты на клиентах Windows с помощью групповой политики..?)
Я хочу иметь возможность запускать следующий фрагмент кода из любого клиента моего приложения (Windows или Ubuntu)
require 'net/http'
uri = URI.parse('https://ubuntu-server.internal.com/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.start { |agent| agent.get(uri.path) }
Должен ли я связать внутренний корневой сертификат CA (и промежуточный сертификат, и остальную часть пакета сертификатов CURL) с приложением, а затем установить
ENV['SSL_CERT_FILE']в коде?)Должен ли я включать в приложение только внутренний корневой сертификат CA и использовать инициализатор для настройки net/http перед использованием? Кажется, это подход RubyInstaller https://github.com/oneclick/rubyinstaller/blob/master/rake/contrib/uri_ext.rb#L287-295 но я действительно не знаю, как мне это кодировать?
Что-то другое?
Вариант 2 кажется мне лучшим на данный момент, но, как я уже сказал, я не знаю, как я буду настраивать
http.use_ssl = true
http.ca_file = "#{Rails.root}/config/internal-ca.crt"
в инициализаторе Rails.
Любая помощь/совет будет принята с благодарностью.
Спасибо