web-dev-qa-db-ja.com

Mavenリリース->認証されていないピア

私は自分のソフトウェアをリリースすることを少し試しています(これは以前にやったことがありません)。これまでのところ、mvn release:prepareを実行できました。 release:performを実行すると、次のエラーが表示されます。

 [INFO] [エラー]目標org.Apache.maven.plugins:maven-deploy-plug 
 in:2.7:deploy(default-deploy)のプロジェクトimg2stlの実行に失敗しました:デプロイに失敗しましたアーティファクト:C 
はアーティファクトnl.byterendition:img2stl:jar:0.9をbyterenditio 
 n-releases(https:// localhost:443/svn/repo/releases)に転送できません:peer認証されていない-> 
 [ヘルプ1] 

Localhost:443にローカルパスワードで保護されたsvnリポジトリを設定したので、.m2フォルダーのsettings.xmlに以下を追加しました

Edwin Buckの回答を含むように編集:

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.Apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.Apache.org/SETTINGS/1.0.0 http://maven.Apache.org/xsd/settings-1.0.0.xsd">

    <servers>
        <server>
            <id>byterendition-releases</id>
            <username>username</username>
            <password>password</password>
        </server>
        <server>
            <id>byterendition-snapshots</id>
            <username>username</username>
            <password>password</password>
        </server>
    </servers>
</settings>

これは私のPOMの便利なセクションです。

<distributionManagement>
    <repository>
        <id>byterendition-releases</id>
        <url>https://localhost:443/svn/repo/releases</url>
    </repository>
    <snapshotRepository>
        <id>byterendition-snapshots</id>
        <url>https://localhost:443/svn/repo/snapshots</url>
    </snapshotRepository>
</distributionManagement>

どうすればMavenでsvnリポジトリにアクセスできますか?

わかりました、エドウィン・バックがローカルホストを使うべきではないと示唆したように、私はそれを動作させることができなかったので、さもなければ仕事に使用するリモートSVNサーバーを使用してこれを試してみると思いました。今、私は別のエラーが発生します:

 [INFO] [エラー]プロジェクトimg2stlでのゴールorg.Apache.maven.plugins:maven-deploy-plug 
 in:2.7:deploy(default-deploy)の実行に失敗しました:デプロイに失敗しましたアーティファクト:C 
アーティファクトnl.byterendition:img2stl:jar:0.9.5 by/ter bybyterendit 
 ion-releases(https://svn.science.ru.nl/repos/ estens/releases /):ファイルの転送に失敗しました:
 ferファイル:https://svn.science.ru.nl/repos/estens/releases/nl/byterendition/img2s
tl/0.9.5 /img2stl-0.9.5.jar。戻りコード:409、ReasonPhrase:Conflict。 -> [Hel 
 p 1] 

繰り返しますが、Eclipseからこのリポジトリにアクセスできます。誰かが私が間違っていることを知っていますか?

17
FinalArt2005

バージョン3.0.5以降、Mavenはhttps接続でSSL証明書をチェックします。コマンドラインパラメーターを追加することで一時的にこれを修正できます

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

SSL証明書をJREにインストールすると、問題が完全に修正されます。

公式ドキュメント: http://maven.Apache.org/wagon/wagon-providers/wagon-http/

63
rec

ステップ1。 DER形式の証明書をダウンロード* .cer(/X.509 .cert)ファイルをローカルディレクトリに

(ブラウザからこれを行うことができます; Chromeの場合、ロック記号をクリックし、証明書を表示->ファイルにコピー)

ステップ2。インポート先Java trust store

\ Program_Files\Java\jdk1.6.0_45\jre\lib\security>%Java_HOME%\ jre\bin\keytool -v -alias mavensrv -import -file d:\ temp\apacher.cer -keystore trust.jks

ステップ3。環境変数としてMavenへのパスを指定します

set MAVEN_OPTS = -Xmx512m -Djavax.net.ssl.trustStore =%Java_HOME%/ jre/lib/security/trust.jks -Djavax.net.ssl.trustStorePassword = changeit -Djavax.net.ssl.keyStore =%Java_HOME%/ jre/lib/security/trust.jks -Djavax.net.ssl.keyStoreType = jks -Djavax.net.ssl.keyStorePassword = changeit

12
Alex Punnen

https://github.com/escline/InstallCert は、必要なツールを提供し、リモート証明書をシステム全体の証明書ストアにインポートする方法を順を追って説明します。

3
Gili

settings.xmlのエントリはlocalhostのサーバーID用ですが、byterendition-releasesおよびbyterendition-snapshotsのIDでリポジトリにアクセスしています。

これは、Mavenがこれらの2つのサーバーに異なる「アイデンティティ」を持っているため、これらの2つのサーバーに資格情報を再統合および関連付けしないことを意味します。 byterendition-releasesおよびbyterendition-snapshotsのsettings.xmlエントリが必要です。

次のようなエントリを追加した場合

    <server>
        <id>byterendition-releases</id>
        <username>user</username>
        <password>password</password>
    </server>

次に、mavenはbyterendition-releasesのサーバー認証情報エントリを持っているため、userのユーザー名とpasswordのパスワードを使用して、byterendition-releasesへのhttps認証チャレンジに対応します。

また、byterendition-snapshotsのエントリを追加するか、byterendition-releasesと同じサーバーIDを持つように設定する必要があります。

---更新された質問に遅れないように編集---

localhost URLを使用してリポジトリにアクセスします。リポジトリが実際に同じホストマシン上にある場合、これは機能する可能性がありますが、機能しない可能性がある多くの理由があります。

  1. SVNリポジトリはリモートSVNサーバー上にあるため、リモートサーバー以外で開発する場合は失敗します。
  2. HTTPサーバーは、外部要求を解決する場合とまったく同じ方法でlocalhostを解決するように構成されていません。

どちらにしても、localhostを捨ててください。マシンの安定したDNS名を取得できない場合は、IPアドレスを入力することをお勧めします。 SVNサーバーがDHCPを使用している場合、DynamicDNSを機能させるために時間をかけます(しかし、実際には、可能であればサーバーの静的IPを取得する必要があります)。

3
Edwin Buck

ここでJavaバージョンが違いを生むことができることがわかりました。

Maven 3.0.5では、Java 6でこのエラーが発生していましたが、Java 7(またはそれ以降)に切り替えると解決されました。

2

Maven 3.6.0を使用して同じ問題が発生しました。提案されたすべてのソリューション(-Dmaven.wagon.http.ssl.insecure = true、-Dmaven.wagon.http.ssl.allowall = trueを使用、CAストアを更新)が機能しませんでした。実際、最初のモジュールではなく〜25ish程度で展開が失敗し、以前のすべてのモジュールで成功しました。したがって、一般的にSSL処理は問題なく、ローカル<>サーバー接続または証明書に一般的な問題があると想定しました。

しばらく混乱していましたが、今日、 このjacocoの問題 に言及しています パラメータ に言及しています。デプロイプラグイン構成の一部としてこのパラメーターをpom.xmlに追加すると、問題が解決しました。

ただし、最初のモジュールではなく、後のモジュールで展開が失敗した理由についてはまだ明確ではありません。

0
Jascha

私はmaven 3.5.3を使用していますが、上記の回答に従ってコマンドラインパラメーターを追加することにより、このSSLの問題を一時的に修正することを選択します。ただし、パラメータの形式は少し変更されているようです。

-D maven.wagon.http.ssl.insecure=true -D maven.wagon.http.ssl.allowall=true

申し訳ありませんが、@ Alex Punnenの回答はコメントできないため、新しい回答を作成する必要があります。

0
han

OSX Mavericksにアップグレードした後、多くのセキュリティ問題が発生しました

  • Amazon AWSでのSSLの問題
  • mavenおよびEclipseで認証されていないピア
  • trustAnchorsパラメーターは空ではない必要があります

これを適用しましたJavaアップデートし、すべての問題を修正しました: http://support.Apple.com/kb/DL1572?viewlocale=en_US

0
Freddy Boucher

サーバーへの接続時にSSLの問題のように見えます。たぶん、ユーザー名とパスワードをチェックする前に。

SSLクライアント認証でsvnサーバーを設定しましたか?これは、クライアント証明書をサーバーに送信する必要があることを意味します。

0
DiogoSantana