0
0

RSpecでsystem specを実行するとOpenSSL::SSL::SSLError:が出るときの対処方法

Posted at

発生した問題

RSpecでsystem specを実行すると以下のようなエラーが出る。

OpenSSL::SSL::SSLError:
  SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)

開発環境

  • Rails 6.0.6.1
  • Ruby 2.7.7
  • rspec-rails 5.1.2
  • webdrivers 5.3.1
  • selenium-webdriver 4.9.0
  • capybara 3.39.2

前提

下記の記事によるとRuby,Railsのバージョンを上げて、selenium-webdriverの最新バージョンを使うのが正攻法のようです。
https://qiita.com/jnchito/items/f994dd3ac2cdc39bff8c

ですが今回は、受講している講座のバージョンに合わせたいため、バージョンを変えずに解決していきます。

解決のために行ったこと

原因の推測

RubyがSSLをうまく認識できていない。
Rubyで開発する場合によく出るエラーの一つみたい。

やったこと

下記記事を参照し、config/application.rbに回避のためのコードを記載
rspec実行時 OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)

if Rails.env.test?
  OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end

結果

OpenSSL::SSL::SSLError:が出なくなる

注意点として、本番環境でこれをやるとセキュリティリスクが高まるので絶対にやらないこと。
本来はちゃんとSSLを取得して適切なところに配置するのが良いみたいですが、今回はテストさえできればいいので簡単に回避できる方法を取りました。

ただ、SSL認証エラーは解消しましたが、Google Chromeが立ち上がらないという別のエラーが発生しました。。。
こちらの解消については長くなってしまうので別記事にまとめます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0