Instalando o plugin vagrant na rede corporativa

1

Estou tentando instalar o plug-in Vagrant na rede corporativa com seu próprio certificado raiz, mas ele falha com:

$ 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/.

O certificado funciona bem sob os navegadores da web, mas de alguma forma a Vagrant não entende esses certificados do sistema. Eu usei http em vez de https como acima, mas isso não ajudou.

Quaisquer outras soluções alternativas para esse problema?

    
por kenorb 09.09.2016 / 12:20

3 respostas

3

O hackery de arquivos Ruby nos comentários / respostas definitivamente não é recomendado, pois nega os benefícios de ter SSL protegendo suas conexões.

O caminho "certo" (também conhecido como "não vai te caçar") é adicionar o certificado do seu proxy / firewall à lista de certificados confiáveis para o Ruby embutido que o Vagrant usa.

Navegue até o diretório onde o Vagrant foi instalado, abra o arquivo embedded\cacert.pem e anexe o conteúdo do seu certificado corporativo ao arquivo e depois salve e saia.

No Windows, isso é C:\Hashicorp\Vagrant\embedded\cacert.pem . Infelizmente, nem sempre é possível usar o certificado diretamente se você exportá-lo do Internet Explorer. Nesses casos, você pode convertê-lo usando o openSSL para obtê-lo no formato correto.

Eu tinha um script que fazia isso para você, mas preciso rastreá-lo novamente. Depois disso, atualizarei essa resposta com uma maneira mais fácil de executar isso, pois toda vez que você atualizar o Vagrant, ele provavelmente destruirá o arquivo cacert.pem .

    
por 18.10.2016 / 19:38
1

Normalmente, desabilitar :ssl_verify_mode em seu gemrc localizado em seu sysconfdir resolve a maioria dos problemas de certificado, por exemplo adicionando esta linha:

:ssl_verify_mode: 0

para %USERPROFILE%\.gemrc ou C:\ProgramData\gemrc no Windows, caso contrário, em ~/.gemrc ou /etc/gemrc (no Linux / OS X).

Verifique a pasta correta por: ruby -retc -e 'p Etc.sysconfdir' . Você pode precisar instalar o RailsInstaller .

Você pode verificar se funcionou com:

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

Por favor, note que acima não é recomendado, pois é um risco de segurança. Portanto, definir SSL_CERT_FILE para o arquivo PEM correto ou copiar um novo certificado de confiança no diretório ssl_certs é melhor caminho. Veja: Faça o download de um cacert.pem para o RailsInstaller no GH Gist

No entanto, com base na minha experiência acima de não funcionará , portanto, a solução mais fácil é editar mixin_install_opts.rb arquivo (por exemplo, C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.5\plugins\commands\plugin\command ) e substitua https em plugin_sources por http , por exemplo

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

Para depurar mais problemas, SET VAGRANT_LOG=INFO ( export VAGRANT_LOG=INFO no shell), antes de executar o comando vagrant novamente.

Relacionados:

por 09.09.2016 / 14:06
0

Existe uma opção muito mais fácil! Vamos usar o atualizador de hosts como um exemplo

Primeiro, ao montar o software a ser distribuído, adquira o plug-in como uma preciosidade:

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

Em seguida, distribua o arquivo gem e em cada máquina, execute:

vagrant plugin install vagrant-hostsupdater-1.1.1.160.gem

Se você não conseguir executar gem , faça o download do arquivo no link

    
por 25.05.2018 / 17:40