Skip to content

企業のMITMプロキシ環境でのAlpine Dockerイメージへの信頼済みルートCA追加

問題の概要

企業ネットワーク環境では、セキュリティポリシーとして中間者攻撃(MITM)プロキシが導入されている場合があります。このような環境では、外部へのHTTPS通信が企業独自のCA(認証局)によって再署名され、Dockerビルド中のapk addコマンドがSSL証明書検証エラーで失敗します。

エラーの例:

ERROR: unable to select packages:
  curl (no such package):
    required by: world[curl]

これは、Alpine Linuxが標準の信頼済みCAストアのみを持っており、企業の独自CAを認識しないために発生します。

セキュリティについての注意

企業のMITMプロキシはセキュリティ監視のためですが、この設定は慎重に行う必要があります。信頼できないCAを追加するとセキュリティリスクが生じる可能性があります。

解決方法

方法1: 証明書を手動で追加する(推奨)

最も簡単な方法は、企業のルートCA証明書を直接ca-certificates.crtファイルに追加することです。

dockerfile
FROM alpine:latest

# 企業のルートCA証明書をコピー
COPY company-root-ca.crt /tmp/company-root-ca.crt

# 証明書を信頼済みストアに追加
RUN cat /tmp/company-root-ca.crt >> /etc/ssl/certs/ca-certificates.crt

# 必要なパッケージをインストール
RUN apk --no-cache add curl ca-certificates

# 一時ファイルを削除
RUN rm /tmp/company-root-ca.crt

方法2: update-ca-certificatesを使用する

より正式な方法では、update-ca-certificatesコマンドを使用します。

dockerfile
FROM alpine:latest

# ルート権限に切り替え
USER root

# 企業のCA証明書を所定の場所にコピー
COPY company-root-ca.crt /usr/local/share/ca-certificates/company-root-ca.crt

# ca-certificatesパッケージをインストールして証明書を更新
RUN apk --no-cache add ca-certificates && \
    update-ca-certificates && \
    rm -rf /var/cache/apk/*

# 必要なパッケージをインストール
RUN apk --no-cache add curl

方法3: --no-check-certificateオプションを使用する(Alpine 3.18+)

Alpine 3.18以降では、--no-check-certificateオプションを使用して一時的に証明書検証を無効にできます。

dockerfile
FROM alpine:3.18

# 証明書検証を一時無効にしてca-certificatesをインストール
RUN apk --no-cache add --no-check-certificate ca-certificates

# 企業のCA証明書を追加
COPY company-root-ca.crt /usr/local/share/ca-certificates/company-root-ca.crt

# 証明書を更新
RUN update-ca-certificates

# 必要なパッケージをインストール
RUN apk --no-cache add curl

ベストプラクティス

  • 証明書ファイルは.crt拡張子を使用してください
  • インストール後は一時ファイルを削除してイメージサイズを小さく保ちます
  • 本番環境では必ず正規の証明書を使用してください

トラブルシューティング

証明書のフォーマット確認

証明書が正しい形式か確認するには:

bash
openssl x509 -in company-root-ca.crt -text -noout

複数証明書の扱い

複数の証明書を追加する場合:

dockerfile
COPY ca-certificates/ /usr/local/share/ca-certificates/
RUN update-ca-certificates

セキュリティ考慮事項

  1. 信頼の原則: 追加するCAが本当に信頼できるか確認してください
  2. 証明書の検証: 本番環境では適切な証明書検証を維持してください
  3. イメージのスキャン: 定期的にセキュリティスキャンを実施してください

まとめ

企業ネットワークのMITMプロキシ環境下でAlpine Dockerイメージをビルドする場合、上記のいずれかの方法で企業のルートCAを信頼済みストアに追加することで問題を解決できます。方法1が最もシンプルで、方法2がより公式なアプローチ、方法3は新しいAlpineバージョンで利用可能です。

どの方法を選択する場合も、セキュリティリスクを理解した上で実施することが重要です。