Gradle utiliser l'authentification de certificat de dépôt
Le Problème
J'ai un Android Gradle projet qui devrait tirer une lib de mon de lentreprise sonatype nexus serveur. Le nexus serveur utilise un certificat d'authentification. Cela signifie que le client dispose d'un certificat privé qui authentifie et autorise celui-ci à l'encontre de la nexus serveur.
Le problème est de savoir comment configurer gradle pour utiliser mon certificat (qui est dans le osx fichier de clés).
/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 un certificat de serveur nexus respont:
Erreur: n'a pas de TÊTE 'https://prefix.server.com/nexus/content/repositories/artifactid/de/komoot/android/kmt-material-showcase/0.0.1/kmt-material-showcase-0.0.1.pom'. Reçu le code d'état de 400 à partir du serveur: Bad Request
Ma première solution était d'essayer de configurer la jvm pour utiliser le osx trousseau de clés pour les certificats. La même méthode m'a aidé à pousser et à publier des libs/artefacts sur le serveur nexus.
/app/gradle.propriétés
org.gradle.jvmargs=-Djavax.net.ssl.keyStore=NONE -Djavax.net.ssl.keyStoreType=KeychainStore -Djavax.net.ssl.keyStorePassword=-
Cela ne fonctionne pas de la gradle synchronisation a échoué:
Erreur:AUCUN (Aucun fichier ou répertoire)
Il ressemble à la gradle attend à "NONE" du paramètre '-Djavax.net.le protocole ssl.fichier de clés'. J'ai essayé plusieurs uper et minuscules des solutions, mais tous ont échoué.
La deuxième approche est d'essayer ça avec
org.gradle.jvmargs=-Djavax.net.ssl.keyStoreType=KeychainStore
Mais le serveur répond avec 400 à nouveau. Ressemble à la JVM arguments n'ont pas été utilisés.
Des idées ou des articles de cette rubrique ?
J'espère que quelqu'un pourra m'aider.
OriginalL'auteur Arne Köckeritz | 2016-03-24
Vous devez vous connecter pour publier un commentaire.
Le Problème est que le processus Java n'ont pas le certificat pour l'authentification.
Dans ma première approche je suis venu très près, mais j'ai oublié d'ajouter de la société d'autorité de certification racine cert. Ma société privée du certificat appartient à l'autorité de certification racine, les deux doivent donc être fournis à java.
Solution:
D'abord fournir votre certificat d'entreprise de l'gradle processus.
Modifier votre utilisateur gradle.propriétés et ajouter
Ensuite exporter votre compagnie d'autorité de certification racine du cert pour le keystore java.
C'est ça l'authentification de certificat devrait maintenant fonctionner.
Ceci est utilisé par exemple pour faire propre android bibliothèque de projets et de la pousser à un artefact serveur.
https://medium.com/android-news/the-complete-guide-to-creating-an-android-library-46628b7fc879#.naboz7yng
OriginalL'auteur Arne Köckeritz
Ma solution a été de mettre à jour les certificats d'autorité de certification sur ubuntu/debian système.
OriginalL'auteur Manuel Schmitzberger