はじめに
UTM(SonicWallなど)やSASE(CATO, NetSkopeなど)によりSSL/TLSインスペクションが適用されたネットワーク上で gem install
などのコマンドを実行すると、次のエラーが発生する場合があります。
Retrying fetcher due to error (2/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
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'.
Retrying fetcher due to error (3/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
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'.
Retrying fetcher due to error (4/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
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'.
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'
RubyGems関連のトラフィックをTLSインスペクションから除外してこの問題を回避する方法もありますが、セキュリティ上の観点からはTLSインスペクションから除外する方法はあまり好ましくなく、最終手段として考えておきたいものです。
幸いなことに、UTMやSASEベンダー各社は、このようなケースを想定して、製品やサービスに対応した独自のCA証明書を発行しています。そのCA証明書を適切な位置に配置することで、この問題を解消することが可能です。手順は次の通りとなります。
手順
以下は、Windowsにおける対応手順になります。また、RubyはRubyInstallerでインストールされていることを前提とします。
まず、<Rubyインストールディレクトリ>\lib\ruby\<Rubyバージョン>\rubygems
フォルダへ移動します。例えば、Ruby 2.7の場合は次の通りとなります。
c:\Ruby27-x64\lib\ruby\2.7.0\rubygems\ssl_certs
このディレクトリを開くと、配下に次のディレクトリを確認することが出来ます。
index.rubygems.org
rubygems.global.ssl.fastly.net
rubygems.org
上記3ディレクトリに対して、UTMやSASEが発行しているCA証明書を配置します。拡張子は .pem
とします。
CA証明書を各ディレクトリへ配置後、再度 gem install
を実行し、結果を確認します。