2020/12/31

WindowsのEmbulkでSSLに関するエラーが出た場合の対応方法



Embulkというオープンソースで公開してくださっているETLがあります。
これの素晴らしいのはJavaで開発されており、Javaの実行環境さえあればマルチプラットフォームで実行可能な点です。

GitHub - embulk/embulk: Embulk: Pluggable Bulk Data Loader. 

個人的にWindowsをホストとする環境を使うことが多いため、EmbulkのためだけにLinuxサーバを準備するのは面倒だったので、Embulkを重宝させていただいてます。

様々なデータソースから別のデータソースへデータロードや加工が可能です。
それぞれのデータソースへのアクセスについてはプラグインが公開されておりそれを導入することで対応できます。

プラグインをダウンロードして来てセットアップというのではなく、Embulkから導入することも可能です。

例:SQL ServerでデータをOutputするプラグインの導入コマンド
embulk.bat gem install embulk-output-sqlserver

gemと書かれていますがこの端末にはRubyは導入しておりません。
Embulk内部で利用しているものであり、個別のセットアップ不要で利用できるのはすごく便利。



この手のツールは一度セットアップしたあと環境をいじらない限り特に手を出す必要はないんですが、たまたまデータソースを追加しようとしたときにハマってしまいました。

久しぶりに上記のコマンドを実行したところSSL証明書に関するエラーが…

ERROR:  SSL verification error at depth 1: unable to get local issuer certificate (20)
ERROR:  You must add /OU=GlobalSign Root CA - R3/O=GlobalSign/CN=GlobalSign to your local trusted store
ERROR:  While executing gem ... (OpenSSL::SSL::SSLError)
    certificate verify failed

上記エラーでググると、rubygemの実行パラメータを修正するとか呼び出しているファイルを修正するなど色々出てきますがいずれも難易度高く、IT素人にはよくわからない。

よくわからないなりに対応しても結果としては状況好転せず。


対応方法

1.証明書を手動でダウンロード

公式サイトから証明書を手動でダウンロードして、任意の場所に保存します。
GlobalSignRootCA.pem

ファイル名は何でも大丈夫です。


2.環境変数に証明書の絶対パスを登録


変数名:SSL_CERT_FILE
変数値:ダウンロードしたファイルまでのパス


これで無事プラグインのインストールに成功するはずです。

Successfully installed embulk-output-sqlserver-0.9.0-java
1 gem installed


※お使いのWindows OSのバージョンによっても変わってくるかもしれないのでそのへんはググってください。