web-dev-qa-db-fra.com

Gradle utiliser l'authentification par certificat pour le référentiel

Le problème

J'ai un projet Android Gradle qui devrait tirer une librairie du serveur Nexus Sonatype de mon entreprise. Le serveur Nexus utilise une authentification par certificat. Cela signifie que le client dispose d'un certificat privé qui l'authentifie et l'autorise par rapport au serveur Nexus.

Le problème est de savoir comment configurer gradle pour utiliser mon certificat (qui se trouve dans le magasin de clés osx).

/app/build.gradle

repositories {
   // some other repositorys...
   ...
   maven {
      credentials {
         username = NEXUS_USERNAME
         password = NEXUS_PASSWORD
      }
      url 'https://prefix.server.com/nexus/content/repositories/artifactid'
   }
}

Sans donner de certificat, le serveur nexus répond avec:

Erreur: impossible HEAD ' https://prefix.server.com/nexus/content/repositories/artifactid/de/komoot/Android/kmt-material-showcase/0.0.1/kmt-material- showcase-0.0.1.pom '. Code d'état reçu 400 du serveur: Requête incorrecte

Ma première solution a été d'essayer de configurer le JVM pour utiliser le trousseau osx pour les certificats. La même méthode m'a aidé à publier et à publier des bibliothèques/artefacts sur le serveur Nexus.

/app/gradle.properties

org.gradle.jvmargs=-Djavax.net.ssl.keyStore=NONE -Djavax.net.ssl.keyStoreType=KeychainStore -Djavax.net.ssl.keyStorePassword=-

Cela ne fonctionne pas, la synchronisation de gradle a échoué: Erreur: NONE (Aucun fichier ou répertoire de ce type).

Il semble que le grade attendu soit 'AUCUN' du paramètre '-Djavax.net.ssl.keyStore'. J'ai essayé plusieurs solutions supérieures et inférieures, mais toutes ont échoué.

La deuxième approche consistait à essayer avec 

org.gradle.jvmargs=-Djavax.net.ssl.keyStoreType=KeychainStore

Mais le serveur répond avec 400 à nouveau. On dirait que les arguments de la JVM n'ont pas été utilisés.

Des idées ou des articles sur ce sujet? J'espère que quelqu'un pourra m'aider.

11
Arne Köckeritz

Ma solution a été de mettre à jour les certificats ca sur le système Ubuntu/Debian.

update-ca-certificates -f
0