Il problemaGradle l'autenticazione dei certificati per l'uso repository
Ho un progetto Gradle Android che dovrebbe tirare un lib dal mio server nexus Companys Sonatype. Il server nexus utilizza un'autenticazione del certificato. Ciò significa che il client ha un certificato privato che lo autentica e lo autorizza contro il server nexus.
Il problema è come configurare gradle per utilizzare il mio certificato (che si trova nel keystore 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'
}
}
Senza dare un certificato del server di respont nesso con:
errore: Impossibile 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'. Ricevuto il codice di stato 400 dal server: Richiesta errata
La mia prima soluzione era provare a configurare jvm per utilizzare il portachiavi osx per i certificati. Lo stesso metodo mi ha aiutato a spingere e pubblicare lib/artefatti sul server nexus.
/app/gradle.properties
org.gradle.jvmargs=-Djavax.net.ssl.keyStore=NONE -Djavax.net.ssl.keyStoreType=KeychainStore -Djavax.net.ssl.keyStorePassword=-
Questo non funziona la sincronizzazione Gradle riuscita: errore: nessuno (Nessun file o directory)
Sembra che il Gradle dovrebbe essere 'NONE' del parametro '-Djavax.net.ssl.keyStore'. Ho provato diverse soluzioni di uper e minuscolo ma tutte sono fallite.
Il secondo approccio è stato quello di provare con
org.gradle.jvmargs=-Djavax.net.ssl.keyStoreType=KeychainStore
Ma il server rispondono con 400 di nuovo. Sembra che gli argomenti JVM non siano stati usati.
Eventuali idee o articoli per questo argomento? Spero che qualcuno possa aiutarmi.
"KeychainStore" non è un tipo di archivio chiavi valido. Per questo esempio, dovrebbe essere "PKCS12". Altrimenti, ottima risposta - grazie! – Mark