Kyryl Zotov
Kyryl Zotov

Reputation: 1968

Gradle Android communicate with maven repository Authentication error

I have these in my gradle build but when I try to compile compile'com.livegenic:livegenic-core:2.0.0' it gives me Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

Maybe I am using my gradle srcipt to authenticate wrong way?

repositories {
        maven {
            credentials {
                username 'admin'
                password '*********'
            }
            url 'https://cloudbuild.livegenic.com/nexus/content/repositories/test_kirill/'
        }
    }

EDITED: This is the trace of error

Caused by: org.gradle.internal.resource.transport.http.HttpRequestException: Could not GET 'https://cloudbuild.livegenic.com/nexus/content/repositories/test_kirill/com/livegenic/livegenic-core/2.0.0/livegenic-core-2.
0.0.pom'.
        at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:83)
        at org.gradle.internal.resource.transport.http.HttpClientHelper.performRawGet(HttpClientHelper.java:69)
        at org.gradle.internal.resource.transport.http.HttpClientHelper.performGet(HttpClientHelper.java:73)
        at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource(HttpResourceAccessor.java:51)
        at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource(HttpResourceAccessor.java:34)
        at org.gradle.internal.resource.transfer.DefaultExternalResourceConnector.openResource(DefaultExternalResourceConnector.java:41)
        at org.gradle.internal.resource.transfer.ProgressLoggingExternalResourceAccessor.openResource(ProgressLoggingExternalResourceAccessor.java:36)
        at org.gradle.internal.resource.transport.DefaultExternalResourceRepository.getResource(DefaultExternalResourceRepository.java:63)
        at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.getResource(DefaultCacheAwareExternalResourceAccessor.java:75)
        at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadStaticResource(DefaultExternalResourceArtifactResolver.java:90)
        ... 133 more        
Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
        at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
        at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
        at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
        at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
        at org.apache.http.impl.client.DecompressingHttpClient.execute(DecompressingHttpClient.java:137)
        at org.apache.http.impl.client.DecompressingHttpClient.execute(DecompressingHttpClient.java:118)
        at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:113)
        at org.gradle.internal.resource.transport.http.HttpClientHelper.executeGetOrHead(HttpClientHelper.java:90)
        at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:81)
        ... 142 more  

Upvotes: 1

Views: 663

Answers (1)

JBirdVegas
JBirdVegas

Reputation: 11405

Instead of using https try using http

repositories {
    maven {
        credentials {
            username 'admin'
            password '*********'
        }
        url 'http://cloudbuild.livegenic.com/nexus/content/repositories/test_kirill/'
    }
}

As pointed out yes this defeats the protections of https, 100% agreed. The only real solution is to have the server fix it's certificate. However it maybe the case that some enterprise firewall is resigning all the traffic, yes it happens. If you have access to that cert being used to resign everything then you could import the cert to your tool chain like this

$ cd $JAVA_HOME/jre/lib/security
$ mv cacerts cacerts.orig
$ chmod 444 cacerts.orig
$ cp cacerts.orig cacerts
$ chmod 664 cacerts
$ $JAVA_HOME/bin/keytool -keystore cacerts -import -alias MyAlias -file /path/to/myCert.cer

Be sure you run the keytool import as a user who is able to modify the Java keystore on your system. For me on a Mac that was root.

Upvotes: 1

Related Questions