Skip to content

Mavenの外部HTTPリポジトリブロック解除方法

セキュリティ注意

HTTPリポジトリのブロックはMaven 3.8.1で導入された重要なセキュリティ機能です。本ガイドで紹介する方法を使用する前に、リポジトリをHTTPSにアップグレードできないか検討してください。

問題の概要

Maven 3.8.1以降、デフォルトで外部HTTPリポジトリへのアクセスがブロックされるようになりました。これはCVE-2021-26291に対応するセキュリティ強化策です。

エラーメッセージ例:

Blocked mirror for repositories: [repository-id (http://example.com/repo)]

解決方法

方法1: 特定リポジトリのみを許可(推奨)

最も安全な方法は、必要なHTTPリポジトリのみを個別に許可することです。

~/.m2/settings.xml に以下の設定を追加:

xml
<settings>
    <mirrors>
        <mirror>
            <id>my-repo-http-unblocker</id>
            <mirrorOf>your-repo-id</mirrorOf>
            <name>Unblocker for internal HTTP repository</name>
            <url>http://your-internal-repo-url</url>
        </mirror>
    </mirrors>
</settings>

TIP

<mirrorOf>には、pom.xmlで定義されているリポジトリIDを指定します

方法2: プロジェクト固有の設定

チームで共有するプロジェクトの場合は、プロジェクト内に設定ファイルを作成:

.mvn/local-settings.xml:

xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 
          http://maven.apache.org/xsd/settings-1.2.0.xsd">
    <mirrors>
        <mirror>
            <id>internal-repo-unblocker</id>
            <mirrorOf>internal-repo</mirrorOf>
            <url>http://internal-repo-url</url>
        </mirror>
    </mirrors>
</settings>

.mvn/maven.config:

--settings
./.mvn/local-settings.xml

方法3: パスワード保護されたリポジトリの場合

認証が必要なHTTPリポジトリの場合は、サーバー設定も追加:

xml
<settings>
    <servers>
        <server>
            <id>your-repo-id</id>
            <username>your-username</username>
            <password>your-password</password>
        </server>
    </servers>
    <mirrors>
        <mirror>
            <id>your-repo-id</id>
            <mirrorOf>your-repo-id</mirrorOf>
            <url>http://your-repo-url</url>
            <blocked>false</blocked>
        </mirror>
    </mirrors>
</settings>

注意点とベストプラクティス

非推奨な方法

以下の方法はセキュリティリスクがあるため避けてください:

  • すべてのHTTPリポジトリを無条件に許可
  • Mavenのグローバル設定を直接変更
  • Mavenのバージョンをダウングレード

推奨されるアプローチ

  1. HTTPSへの移行: リポジトリ管理者にHTTPS対応を依頼
  2. 最小権限の原則: 必要なリポジトリのみ許可
  3. 設定の共有: プロジェクト設定をチームで共有

トラブルシューティング

IntelliJ IDEAの場合

IntelliJにバンドルされているMavenを使用している場合、設定ファイルのパスは異なります:

${user.home}/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/バージョン番号/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf/settings.xml

設定が反映されない場合

  1. Mavenの設定ファイルの優先順位を確認
  2. プロジェクトの再読み込みを実行
  3. Mavenのキャッシュをクリア: mvn dependency:purge-local-repository

まとめ

MavenのHTTPリポジトリブロックは重要なセキュリティ機能ですが、やむを得ずHTTPリポジトリを使用する必要がある場合、本ガイドで紹介した方法で特定のリポジトリのみを許可できます。常にセキュリティリスクを考慮し、可能な限りHTTPSへの移行を優先してください。