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.
Ma solution a été de mettre à jour les certificats ca sur le système Ubuntu/Debian.
update-ca-certificates -f