Gradle verwenden Sie die Zertifikat-Authentifizierung für das repository
Das Problem
Ich habe ein Android-Gradle-Projekt, das ziehen sollte eine lib von meinem Firmen sonatype nexus-server. Der nexus server ein Zertifikat verwendet-Authentifizierung. Das bedeutet, dass der client über ein eigenes Zertifikat, das die Authentifizierung und Autorisierung ihn gegen den nexus server.
Das problem ist, wie zu konfigurieren, gradle verwenden, mein Zertifikat (das ist in der osx-keystore).
/app/build.gradle
repositories {
//some other repositorys...
...
maven {
credentials {
username = NEXUS_USERNAME
password = NEXUS_PASSWORD
}
url 'https://prefix.server.com/nexus/content/repositories/artifactid'
}
}
Ohne ein Zertifikat der nexus server respont mit:
Fehler: Konnte nicht KOPF 'https://prefix.server.com/nexus/content/repositories/artifactid/de/komoot/android/kmt-material-showcase/0.0.1/kmt-material-showcase-0.0.1.pom'. Erhalten status-code 400 vom server: Bad Request
Meine erste Lösung war es, zu versuchen, konfigurieren Sie die jvm zu verwenden, die osx-Schlüsselbund für die Zertifikate. Die gleiche Methode hat mir geholfen, zu schieben und zu veröffentlichen libs/Artefakte auf dem nexus-server.
/app/gradle.Eigenschaften
org.gradle.jvmargs=-Djavax.net.ssl.keyStore=NONE -Djavax.net.ssl.keyStoreType=KeychainStore -Djavax.net.ssl.keyStorePassword=-
Das funktioniert nicht, die gradle-sync-failed:
Fehler:KEINE (Keine solche Datei oder Verzeichnis)
Sieht es aus wie die gradle erwartet, dass 'NONE' der Parameter '-Djavax.net.ssl.keyStore'. Ich habe versucht mehrere uper und lower Fall-Lösungen, aber alle gescheitert.
Der zweite Ansatz war zu versuchen, es mit
org.gradle.jvmargs=-Djavax.net.ssl.keyStoreType=KeychainStore
Aber die server reagieren mit 400 wieder. Sieht aus wie die JVM-Argumente wurden nicht verwendet.
Irgendwelche Ideen oder Artikel zu diesem Thema ?
Hoffe mir kann jemand helfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem war, dass der Java-Prozess hat nicht das Zertifikat für die Authentifizierung.
In meinem ersten Ansatz kam ich sehr nah, aber ich vergaß hinzuzufügen, der Firma root-CA-cert. Meine Firma das private Zertifikat gehört zu der root-CA, also beide müssen zur Verfügung gestellt werden, um java.
Lösung:
Zunächst Ihr eigenes Unternehmen Zertifikat die gradle-Prozess.
Bearbeitung von gradle.Eigenschaften und fügen Sie
Dann exportieren Sie Ihre Unternehmens-root-ca-Zertifikat zum java-keystore.
Thats it Zertifikat-Authentifizierung sollte jetzt funktionieren.
Dies ist zum Beispiel verwendet, um eigene android-Bibliothek-Projekte und schieben Sie Sie, um ein Artefakt-server.
https://medium.com/android-news/the-complete-guide-to-creating-an-android-library-46628b7fc879#.naboz7yng
Meine Lösung war durch die Aktualisierung der ca-Zertifikate auf den ubuntu/debian-system.