0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker buildでのSSL証明書エラー対処 【GitHub Actions】

Last updated at Posted at 2020-11-24

状況

GitHub Actionsを利用したDocker buildx中のgem installで以下のエラーが発生

#24 [linux/arm/v7  7/10] RUN gem install iconv
#24 2.493 ERROR:  SSL verification error at depth 1: unable to get local issuer certificate (20)
#24 2.495 ERROR:  You must add /C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA to your local trusted store

ベース・イメージはDocker Hubのhttpd:2.4.46httpd:2.4.43(2020年11月時点のlatest)のlinux/arm/v7です。
linux/arm64linux/amd64では発生していません。

詳しくはレポジトリを参照してください。
後述の通りその後対処が不要になったのでDockerfile等は当時の版を参照。

原因

原因は書いてある通り証明書エラーです。
GlobalSign Root CAの証明書が入っていません。

対処

証明書を追加すれば解決します。
Bundlerのページにあるトラブルシュートに従い、pemファイルへの直接リンクからダウンロードします。
署名の追加方法はLife with ITさんの記事@msiさんの記事に従いました。

ただし、証明書が不足している/古い場合はcurlが動作しないことがあります、Dockerfile内ではなく外部でcurlから取得し、COPYした方が良いでしょう。

.github/workflows/docker.yml
      - name: Download GlobalSignRootCA.pem
        run: curl https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem -o GemCert.pem
Dockerfile
COPY GemCert.pem /tmp/GemCert.pem
RUN mkdir /usr/share/ca-certificates/Gem && \
    cp /tmp/GemCert.pem /usr/share/ca-certificates/Gem && \
    echo "Gem/GemCert.pem" >> /etc/ca-certificates.conf && \
    update-ca-certificates && \
    rm /tmp/GemCert.pem

なお、apt-get install ca-certificatesでは解決しませんでした。
他には、

$ curl -Lks 'https://git.io/rg-ssl' | ruby # SSLのチェック
$ gem install bundler # Bundlerの更新
$ gem update --system # RubyGemsの更新

が推奨されていました。私の場合更新は必要ありませんでしたが、チェックスクリプトは便利です。

なお、今回は証明書をインストールしましたが、SSLなしに設定するという選択肢もあります。お勧めしません。

懸念点

SSLの証明書をGitHubからダウンロードするというのはセキュリティ上心配です。
GitHubでなくとも将来ずっとURLが維持されるか、証明書自体が今後も信用できるのかなど不安が残ります。
特に定期実行もするGitHub Actionsで現時点で動作するだけのワークアラウンドも避けた方が良いでしょう。

ここではやりませんでしたが、追加し処理が終わった後証明書を削除するのも一つのやり方でしょう。

私の場合は、この後ソースコードを修正しgem install自体が不要になり、この対処を削除しました。

参考記事

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?