Установка плагина vagrant в корпоративной сети

2782
kenorb

Я пытаюсь установить плагин Vagrant в корпоративной сети с собственным корневым сертификатом, но он не работает с:

$ vagrant plugin install vagrant-timezone --plugin-source http://rubygems.org Installing the 'vagrant-timezone' plugin. This can take a few minutes... ... Could not verify the SSL certificate for https://gems.hashicorp.com/. There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn't have the CA certificates needed for verification. For information about OpenSSL certificates, see http://bit.ly/ruby-ssl. To connect without using SSL, edit your Gemfile sources and change 'https' to 'http'. ... Warning: this Gemfile contains multiple primary sources. Using `source` more than once without a block is a security risk, and may result in installing unexpected gems. To resolve this warning, use a block to indicate which gems should come from the secondary source. To upgrade this warning to an error, run `bundle config disable_multisource true`.Warning: this Gemfile contains multiple primary sources. Using `source` more than once without a block is a security risk, and may result in installing unexpected gems. To resolve this warning, use a block to indicate which gems should come from the secondary source. To upgrade this warning to an error, run `bundle config disable_multisource true`.Retrying fetcher due to error (2/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://gems.hashicorp.com/. 

Сертификат отлично работает в веб-браузерах, но почему-то Vagrant не понимает эти системные сертификаты. Я использовал httpвместо того, httpsкак указано выше, но это не помогло.

Какие-нибудь другие обходные пути для такой проблемы?

1
Разве ваша компания не перехватывает SSL с Blue Coat? Вы используете прокси? Если вы перейдете по ссылке `https: // gems.hashicorp.com /` в своем браузере, то сможете увидеть GeoTrust -> RapidSSL -> * .hashicorp.com или сертификат вашей компании? techraf 7 лет назад 1
@ techraf Я думаю, что они перехватывают SSL с Blue Coat. Все сайты имеют свои собственные сертификаты корневой цепочки, так что это также происходит без какой-либо настройки прокси. kenorb 7 лет назад 0
Так что `curl https: // gems.hashicorp.com /` тоже не работает, верно? techraf 7 лет назад 0
@techraf Curl работает отлично, мне удалось обойти проблему, отредактировав `mixin_install_opts.rb` и заменив` https` на `http`, тихий грязный обходной путь. kenorb 7 лет назад 1
@techraf Поскольку вы упомянули Blue Coat, я предполагаю, что вы знакомы с этим приложением, можете ли вы ответить: [Что делает приложение Blue Coat Unified Agent?] (http://security.stackexchange.com/q/135378/11825 ) kenorb 7 лет назад 0
Я даже не знал о его существовании. Я просто работал в среде с Blue Coat Proxy и столкнулся с похожими проблемами. techraf 7 лет назад 0

3 ответа на вопрос

4
dragon788

Взломать файл Ruby в комментариях / ответах определенно не рекомендуется, так как он сводит на нет преимущества использования SSL для защиты ваших соединений.

«Правильный» способ (иначе он не будет охотиться за вами) - добавить сертификат прокси / брандмауэра в список доверенных сертификатов для встроенного Ruby, который использует Vagrant.

Перейдите в каталог, где был установлен Vagrant, затем откройте embedded\cacert.pemфайл и добавьте в него содержимое вашего корпоративного сертификата, а затем сохраните и выйдите.

На винде это C:\Hashicorp\Vagrant\embedded\cacert.pem. К сожалению, вы не всегда можете напрямую использовать сертификат, если экспортируете его из Internet Explorer. В этих случаях вы можете конвертировать его, используя openSSL, чтобы получить его в правильном формате.

У меня был сценарий, который сделал большую часть этого для вас, но мне нужно снова его отследить. Как только я это сделаю, я обновлю этот ответ более простым способом, так как каждый раз, когда вы обновляете Vagrant, он, скорее всего, забьет cacert.pemфайл.

1
kenorb

Обычно отключение :ssl_verify_modeв вашем gemrc, расположенном в вашем sysconfdir, решает большинство проблем с сертификатами, например, добавление этой строки:

:ssl_verify_mode: 0 

в %USERPROFILE%\.gemrcили C:\ProgramData\gemrcв Windows, иначе в ~/.gemrcили /etc/gemrc(в Linux / OS X).

Проверьте правильность папки: ruby -retc -e 'p Etc.sysconfdir'. Вам может понадобиться установить RailsInstaller .

Вы можете проверить, что это сработало:

C:\HashiCorp\Vagrant\embedded\bin>gem.bat env RubyGems Environment: - GEM CONFIGURATION: - :ssl_verify_mode => 0 

Обратите внимание, что выше не рекомендуется, так как это риск для безопасности. Так что установка SSL_CERT_FILEправильного файла PEM или копирование нового сертификата доверия в ssl_certsкаталог - лучший способ. Смотрите: Скачать cacert.pemдля RailsInstaller на GH Gist


Однако исходя из моего опыта выше не будет работать, поэтому самый простой обходной путь, чтобы редактировать mixin_install_opts.rbфайл (например C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.5\plugins\commands\plugin\command) и заменить httpsв plugin_sourcesс http, например ,

module VagrantPlugins module CommandPlugin module Command module MixinInstallOpts def build_install_opts(o, options) options[:plugin_sources] = [ "http://rubygems.org", "http://gems.hashicorp.com", ] 

Для дальнейшей отладки проблемы SET VAGRANT_LOG=INFO( export VAGRANT_LOG=INFOв оболочке) перед повторным запуском команды vagrant.


Связанные с:

0
Tom J Nowell

Там намного проще вариант! Давайте используем хост обновления в качестве примера

Во-первых, при сборке распространяемого программного обеспечения приобретите плагин как драгоценный камень:

❯ gem fetch vagrant-hostsupdater Fetching: vagrant-hostsupdater-1.1.1.160.gem (100%) Downloaded vagrant-hostsupdater-1.1.1.160 

Затем распространите файл gem и на каждом компьютере запустите:

vagrant plugin install vagrant-hostsupdater-1.1.1.160.gem 

Если вы не можете запустить gem, загрузите файл с https://rubygems.org/