Vagrant Plugin im Unternehmensnetzwerk installieren

2883
kenorb

Ich versuche, das Vagrant-Plugin mit einem eigenen Stammzertifikat im Unternehmensnetzwerk zu installieren, aber es schlägt fehl mit:

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

Das Zertifikat funktioniert gut unter den Webbrowsern, aber irgendwie versteht Vagrant diese Systemzertifikate nicht. Ich habe httpstatt httpswie oben verwendet, aber das hat nicht geholfen.

Weitere Problemumgehungen für ein solches Problem?

1
Ist Ihre Firma nicht mit Blue Coat SSL abgefangen? Verwenden Sie einen Proxy? Wenn Sie in Ihrem Browser zu https: // gems.hashicorp.com / gehen, können Sie GeoTrust -> RapidSSL -> * .hashicorp.com oder Ihr Unternehmenszertifikat sehen. techraf vor 8 Jahren 1
@ Techraf Ich denke, dass sie SSL mit Blue Coat abfangen. Alle Websites verfügen über eigene Root-Chain-Zertifikate. Dies geschieht auch ohne Proxy-Konfiguration. kenorb vor 8 Jahren 0
`Curl https: // gems.hashicorp.com /` schlägt ebenfalls fehl, oder? techraf vor 8 Jahren 0
@techraf Curl funktioniert einwandfrei. Ich habe es geschafft, das Problem umzugehen, indem ich `mixin_install_opts.rb` editierte und` https` durch `http` ersetzte. kenorb vor 8 Jahren 1
@techraf Da Sie Blue Coat erwähnt haben, gehen Sie davon aus, dass Sie mit dieser App vertraut sind. Können Sie antworten: [Welche Anwendung von Blue Coat Unified Agent kann verwendet werden?] (http://security.stackexchange.com/q/135378/11825.) ) kenorb vor 8 Jahren 0
Ich war mir nicht einmal dessen Existenz bewusst. Ich habe gerade in Umgebungen mit Blue Coat Proxy gearbeitet und bin auf ähnliche Probleme gestoßen. techraf vor 8 Jahren 0

3 Antworten auf die Frage

4
dragon788

Die Ruby-Datei-Hacker in den Kommentaren / Antworten wird definitiv nicht empfohlen, da dadurch die Vorteile des SSL-Schutzes Ihrer Verbindungen zunichte gemacht werden.

Der "richtige" Weg (auch bekannt durch die IT-Abteilung) ist das Hinzufügen Ihres Proxy- / Firewall-Zertifikats zur Liste der vertrauenswürdigen Zertifikate für den eingebetteten Ruby, den Vagrant verwendet.

Navigieren Sie zu dem Verzeichnis, in dem Vagrant installiert wurde, öffnen Sie die embedded\cacert.pemDatei, hängen Sie den Inhalt Ihres Unternehmenszertifikats an die Datei an und speichern und beenden Sie das Programm.

Unter Windows ist das so C:\Hashicorp\Vagrant\embedded\cacert.pem. Leider können Sie das Zertifikat nicht immer direkt verwenden, wenn Sie es aus Internet Explorer exportieren. In diesen Fällen können Sie es mit openSSL konvertieren, um es in das richtige Format zu bringen.

Ich hatte ein Skript, das das meiste für Sie erledigte, aber ich muss es wieder aufspüren. Sobald ich dies getan habe, werde ich diese Antwort mit einer einfacheren Methode aktualisieren, da dies bei jedem Update von Vagrant wahrscheinlich die cacert.pemDatei verstopft .

1
kenorb

Normalerweise werden durch Deaktivieren :ssl_verify_modein Ihrer Gemrc in Ihrem sysconfdir die meisten Probleme mit dem Zertifikat behoben. Fügen Sie z. B. folgende Zeile hinzu:

:ssl_verify_mode: 0 

an %USERPROFILE%\.gemrcoder C:\ProgramData\gemrcunter Windows, ansonsten in ~/.gemrcoder /etc/gemrc(unter Linux / OS X).

Überprüfen Sie den richtigen Ordner: ruby -retc -e 'p Etc.sysconfdir'. Möglicherweise müssen Sie den RailsInstaller installieren .

Sie können überprüfen, ob es funktioniert hat:

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

Bitte beachten Sie, dass oben nicht empfohlen wird, da dies ein Sicherheitsrisiko darstellt. Das Einstellen SSL_CERT_FILEder richtigen PEM-Datei oder das Kopieren eines neuen Vertrauenszertifikats in ein ssl_certsVerzeichnis ist daher ein besserer Weg. Siehe: Laden Sie einen cacert.pemfor RailsInstaller von GH Gist herunter


Doch auf Grund meiner Erfahrung oben wird nicht funktionieren, also die einfachste Abhilfe ist, zu bearbeiten mixin_install_opts.rbDatei (zB C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.5\plugins\commands\plugin\command) und ersetzen httpsin plugin_sourcesmit http, zB

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

Um das Problem weiter zu debuggen SET VAGRANT_LOG=INFO( export VAGRANT_LOG=INFOin der Shell), bevor Sie den Befehl vagrant erneut ausführen.


Verbunden:

0
Tom J Nowell

Es gibt eine viel einfachere Option! Verwenden Sie den Host-Updater als Beispiel

Wenn Sie die zu verteilende Software zusammenstellen, erwerben Sie das Plugin zunächst als Juwel:

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

Dann verteilen Sie die gem-Datei und führen Sie auf jedem Rechner Folgendes aus:

vagrant plugin install vagrant-hostsupdater-1.1.1.160.gem 

Wenn Sie nicht ausführen können gem, laden Sie die Datei von https://rubygems.org/ herunter.