Das ProblemGradle Verwendung Zertifikatsauthentifizierung für Repository
Ich habe ein Android Gradle Projekt, das eine lib von meinem Unternehmen Sonatype Nexus Server ziehen sollte. Der Nexus-Server verwendet eine Zertifikatauthentifizierung. Das bedeutet, dass der Client ein privates Zertifikat besitzt, das ihn authentifiziert und gegen den Nexus-Server autorisiert.
Das Problem ist, wie Gradle zu verwenden, um mein Zertifikat zu verwenden (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 Zertifikat des Nexus Server respont zu geben mit:
Fehler: Kann nicht 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'. Statuscode 400 vom Server empfangen: Ungültige Anforderung
Meine erste Lösung bestand darin, zu versuchen, den jvm so zu konfigurieren, dass der osx-Schlüsselbund für Zertifikate verwendet wird. Die gleiche Methode hat mir geholfen, libs/artifacts auf dem nexus Server zu pushen und zu veröffentlichen.
/app/gradle.properties
org.gradle.jvmargs=-Djavax.net.ssl.keyStore=NONE -Djavax.net.ssl.keyStoreType=KeychainStore -Djavax.net.ssl.keyStorePassword=-
Dies funktioniert nicht, die gradle Sync fehlgeschlagen: Fehler: NONE (Keine solche Datei oder das Verzeichnis)
es das gradle sieht aus wie zu erwarten 'NONE' des Parameters '-Djavax.net.ssl.keyStore'. Ich habe versucht, mehrere Groß-und Kleinbuchstaben Lösungen, aber alle fehlgeschlagen.
Der zweite Ansatz war es mit
org.gradle.jvmargs=-Djavax.net.ssl.keyStoreType=KeychainStore
Aber der Server reagiert mit 400 erneut zu versuchen. Es sieht so aus, als ob die JVM-Argumente nicht verwendet wurden.
Irgendwelche Ideen oder Artikel zu diesem Thema? Hoffe jemand kann mir helfen.
"KeychainStore" ist kein gültiger Keystore-Typ. In diesem Beispiel sollte es "PKCS12" sein. Ansonsten, tolle Antwort - danke! – Mark