web-dev-qa-db-fra.com

maven release -> peer non authentifié

J'essaie un peu de publier mon logiciel (je ne l'avais jamais fait auparavant) et jusqu'à présent, j'ai pu exécuter mvn release: prepare. Pendant l'exécution, je reçois le message d'erreur suivant:

 [INFO] [ERREUR] Échec de l'exécution du but org.Apache.maven.plugins: maven-deploy-plug
 ould ne transférera pas l'artefact nl.byterendition: img2stl: jar: 0.9 de/à byterenditio 
 n-releases (https: // localhost: 443/svn/repo/releases): homologue non authentifié -> 
 [. Aide 1] 

J'ai configuré un référentiel svn local protégé par mot de passe sur localhost: 443, j'ai donc ajouté les éléments suivants à mon fichier settings.xml dans mon dossier .m2

Édité pour inclure la réponse d'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>

Ceci est la section utile de mon 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>

Comment puis-je obtenir que maven accède au référentiel svn?

Ok, comme Edwin Buck a suggéré de ne pas utiliser localhost, mais comme je n’ai pas réussi à le faire fonctionner, j’ai pensé que j’essaierais de le faire en utilisant un serveur SVN distant que j’utilise pour travailler. Maintenant, je reçois une erreur différente:

 [INFO] [ERREUR] Échec de l'exécution du but org.Apache.maven.plugins: maven-deploy-plug
 ould ne transférera pas l'artefact nl.byterendition: img2stl: jar: 0.9.5 de/à byterendit 
 ion-releases (https://svn.science.ru.nl/repos/estens/releases/): échec fichier trans 
 fer: https://svn.science.ru.nl/repos/estens/releases/nl/byterendition/img2s
tl/0.9.5/img2stl-0.9.5.jar. Le code retour est: 409, ReasonPhrase: Conflict. -> [Hel 
 P 1] 

Encore une fois, je peux accéder à ce dépôt d’Eclipse. Est-ce que quelqu'un sait ce que je fais mal?

15
FinalArt2005

Depuis la version 3.0.5, Maven vérifie le certificat SSL sur les connexions https. Vous pouvez résoudre ce problème temporairement en ajoutant les paramètres de ligne de commande.

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

L'installation du certificat SSL dans votre JRE devrait résoudre définitivement le problème.

Documentation officielle: http://maven.Apache.org/wagon/wagon-providers/wagon-http/

60
rec

Étape 1. Téléchargez le certificat au format DER * .cer (/X.509 .cert) dans votre répertoire local.

(Vous pouvez le faire depuis votre navigateur. Pour Chrome, cliquez sur le symbole Verrouiller, Afficher le certificat -> Copier dans un fichier.)

Étape 2. Importez-le dans le magasin de clés de confiance Java.

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

Étape 3. Indiquez le chemin d'accès à maven en tant que variables d'environnement

set MAVEN_OPTS = -Xmx512m -Djavax.net.ssl.trustStore =% Java_HOME%/jre/lib/security/trust.jks -Djavax.net.ssl.trustStorePassword = changez -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 fournit les outils nécessaires et fournit une instruction étape par étape sur la manière d'importer un certificat distant dans le magasin de certificats du système.

3
Gili

J'ai trouvé que la version Java peut faire une différence ici. 

Avec Maven 3.0.5, j’obtenais cette erreur avec Java 6, mais le passage à Java 7 (ou plus récent) l’a résolu pour moi.

2
David Bosschaert

Votre entrée dans settings.xml correspond à un identifiant de serveur localhost mais vous accédez à des référentiels avec des identifiants de byterendition-releases et byterendition-snapshots.

Cela signifie que maven ne reconnaîtra pas et n'associera pas les informations d'identification à ces deux serveurs, car ils ont des "identités" différentes. Vous aurez besoin d'entrées settings.xml pour byterendition-releases et byterendition-snapshots.

Maintenant, si vous avez ajouté une entrée comme 

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

Ensuite, maven devrait relever le défi d'authentification https en byterendition-releases avec un nom d'utilisateur user et un mot de passe password, car il possède une entrée d'informations d'identification de serveur pour byterendition-releases.

Vous devrez également ajouter une entrée supplémentaire pour byterendition-snapshots ou définir le même identifiant de serveur que byterendition-releases.

--- Modifié pour suivre la question mise à jour ---

Vous accédez à votre référentiel avec une URL localhost. Bien que cela puisse fonctionner si votre référentiel se trouve réellement sur le même ordinateur hôte, il existe de nombreuses raisons pour lesquelles cela pourrait ne pas fonctionner.

  1. Le référentiel SVN se trouve sur un serveur SVN distant. Par conséquent, cela échouera lors du développement ailleurs que sur le serveur distant.
  2. Le serveur HTTP n'est pas configuré pour résoudre localhost exactement de la même manière que pour résoudre une requête externe.

De toute façon, fossé localhost. Si vous ne pouvez pas obtenir un nom DNS stable pour la machine, même une adresse IP constitue un meilleur choix. Si votre serveur SVN est sur DHCP, investissez votre temps à faire en sorte que DynamicDNS fonctionne (mais, en réalité, vous devriez obtenir une adresse IP statique pour un serveur si vous le pouvez).

2
Edwin Buck

Avait le même problème en utilisant maven 3.6.0. Toutes les solutions proposées (utilisation de -Dmaven.wagon.http.ssl.insecure = true, -Dmaven.wagon.http.ssl.allowall = true, mise à jour du magasin CA) ne fonctionnaient pas pour moi. En réalité, le déploiement a échoué non pas sur le premier module, mais environ ~ 25 pouces, et a réussi pour tous les modules précédents. J'ai donc supposé qu'en général, la gestion de SSL était correcte et qu'il y avait un problème général dans la connexion ou les certificats du serveur local <>.

Me laissant assez confus pendant un certain temps, je suis tombé aujourd'hui sur cette question jacoco où ils mentionnent le paramètre . L'ajout de ce paramètre à mon fichier pom.xml dans le cadre de la configuration du plug-in de déploiement a résolu le problème pour moi.

Cependant, je ne comprends pas encore pourquoi le déploiement a échoué sur certains modules ultérieurs et pas déjà sur le premier.

0
Jascha

J'utilise maven 3.5.3 et je choisis de résoudre temporairement ce problème SSL en ajoutant les paramètres de ligne de commande en fonction des réponses ci-dessus. Mais le format des paramètres semble un peu changé. 

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

Désolé, je ne peux pas commenter la réponse de @Alex Punnen, je dois donc écrire une nouvelle réponse.

0
han

J'ai eu beaucoup de problèmes de sécurité après la mise à niveau vers OSX Mavericks

  • Problème SSL avec Amazon AWS
  • peer non authentifié avec Maven et Eclipse
  • le paramètre trustAnchors doit être non vide

J'ai appliqué cette mise à jour Java et résolu tous mes problèmes: http://support.Apple.com/kb/DL1572?viewlocale=en_US

0
Freddy Boucher

Cela ressemble à un problème SSL lors de la connexion au serveur. Peut-être avant la vérification du nom d'utilisateur et du mot de passe.

Avez-vous configuré le serveur svn avec l’authentification du client SSL? Cela signifie que vous devez envoyer un certificat client au serveur.

0
DiogoSantana