企業の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
ファイルに追加することです。
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
コマンドを使用します。
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
オプションを使用して一時的に証明書検証を無効にできます。
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
拡張子を使用してください - インストール後は一時ファイルを削除してイメージサイズを小さく保ちます
- 本番環境では必ず正規の証明書を使用してください
トラブルシューティング
証明書のフォーマット確認
証明書が正しい形式か確認するには:
openssl x509 -in company-root-ca.crt -text -noout
複数証明書の扱い
複数の証明書を追加する場合:
COPY ca-certificates/ /usr/local/share/ca-certificates/
RUN update-ca-certificates
セキュリティ考慮事項
- 信頼の原則: 追加するCAが本当に信頼できるか確認してください
- 証明書の検証: 本番環境では適切な証明書検証を維持してください
- イメージのスキャン: 定期的にセキュリティスキャンを実施してください
まとめ
企業ネットワークのMITMプロキシ環境下でAlpine Dockerイメージをビルドする場合、上記のいずれかの方法で企業のルートCAを信頼済みストアに追加することで問題を解決できます。方法1が最もシンプルで、方法2がより公式なアプローチ、方法3は新しいAlpineバージョンで利用可能です。
どの方法を選択する場合も、セキュリティリスクを理解した上で実施することが重要です。