2012-04-08 3 views
4

우리는 gradle로 전환하려고합니다. 모든 것은 잘 작동하지만 pkcs # 11 토큰에있는 클라이언트 인증서에만 액세스 할 수있는 내부 저장소에 문제가 있습니다. Gradle - Company 저장소가 필요합니다 SSL 클라이언트 인증서

#!/bin/bash 
MAVEN_OPTS=" $MAVEN_OPTS \ 
     -Djava.security.debug=sunpkcs11 \ 
      -Djavax.net.ssl.trustStore=NONE \ 
      -Djavax.net.ssl.trustStoreType=pkcs11 \ 
      -Djavax.net.ssl.keyStore=NONE \ 
      -Djavax.net.ssl.keyStoreType=pkcs11 \ 
" 

그래서 내가 처음에 내 gradlew 래퍼 스크립트로 이러한 자바 옵션을 넣어 : 받는다는와

난 그냥 이런 .mavenrc 파일했다

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 
DEFAULT_JVM_OPTS=" \ 
-Djava.security.debug=sunpkcs11 \ 
-Djavax.net.ssl.trustStore=NONE \ 
-Djavax.net.ssl.trustStoreType=pkcs11 \ 
-Djavax.net.ssl.keyStore=NONE \ 
-Djavax.net.ssl.keyStoreType=pkcs11 \ 
" 

내가 실행 ./ gradlew 빌드 내 토큰 내 핀을 요청하지만 그때 인공물의 요청은 401 실패합니다. 서버에서 클라이언트 인증서가 도착하지 않습니다.

$ ./gradlew --stacktrace compileJava

:compileJava 
SunPKCS11 loading /etc/opensc/opensc-java.cfg 
sunpkcs11: Initializing PKCS#11 library /usr/lib/opensc-pkcs11.so 
Information for provider SunPKCS11-OpenSC 
[lots of debugging infos from sub pkcs11] 
sunpkcs11: getting provider callback handler 
sunpkcs11: getting default callback handler 
[ entering PIN ] 
sunpkcs11: login succeeded 
sunpkcs11: user already logged in 
sunpkcs11: user already logged in 
sunpkcs11: user already logged in 
sunpkcs11: user already logged in 

FAILURE: Build failed with an exception. 

* What went wrong: 
Could not resolve all dependencies for configuration ':compile'. 
> Could not resolve group: .... 
    Required by: ... 
    > Could not GET 'https://nexus/PATH...'. Received status code 401 from server: Authorization Required 
    > Could not GET 'https://nexus/PATH...'. Received status code 401 from server: Authorization Required 

* Try: 
Run with --info or --debug option to get more log output. 

* Exception is: 
[...] 
Caused by: org.gradle.api.UncheckedIOException: Could not GET 'https://nexus/PATH...'. Received status code 401 from server: Authorization Required 
    at org.gradle.api.internal.artifacts.repositories.transport.http.HttpResourceCollection.processHttpRequest(HttpResourceCollection.java:145) 
    at org.gradle.api.internal.artifacts.repositories.transport.http.HttpResourceCollection.initGet(HttpResourceCollection.java:121) 
    at org.gradle.api.internal.artifacts.repositories.transport.http.HttpResourceCollection.getResource(HttpResourceCollection.java:81) 
    at org.gradle.api.internal.artifacts.repositories.transport.http.HttpResourceCollection.getResource(HttpResourceCollection.java:54) 
    at org.gradle.api.internal.artifacts.repositories.ResourceCollectionResolver.getResource(ResourceCollectionResolver.java:304) 
    at org.gradle.api.internal.artifacts.repositories.ResourceCollectionResolver.findStaticResourceUsingPattern(ResourceCollectionResolver.java:248) 
    at org.gradle.api.internal.artifacts.repositories.ResourceCollectionResolver.findResourceUsingPattern(ResourceCollectionResolver.java:234) 
    at org.gradle.api.internal.artifacts.repositories.ResourceCollectionResolver.findResourceUsingPatterns(ResourceCollectionResolver.java:136) 
    at org.gradle.api.internal.artifacts.repositories.MavenResolver.findIvyFileRef(MavenResolver.java:117) 
    at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:223) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.DependencyResolverAdapter.getDependency(DependencyResolverAdapter.java:84) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CacheLockingModuleVersionRepository$1.create(CacheLockingModuleVersionRepository.java:53) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CacheLockingModuleVersionRepository$1.create(CacheLockingModuleVersionRepository.java:51) 
    at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:172) 
    at org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:107) 
    at org.gradle.api.internal.artifacts.ivyservice.DefaultCacheLockingManager.longRunningOperation(DefaultCacheLockingManager.java:57) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CacheLockingModuleVersionRepository.getDependency(CacheLockingModuleVersionRepository.java:51) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleVersionRepository.resolveModule(CachingModuleVersionRepository.java:150) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleVersionRepository.findModule(CachingModuleVersionRepository.java:88) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleVersionRepository.getDependency(CachingModuleVersionRepository.java:79) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.IvyContextualiser$1.invoke(IvyContextualiser.java:44) 
    at $Proxy34.getDependency(Unknown Source) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.UserResolverChain.findLatestModule(UserResolverChain.java:71) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.UserResolverChain.resolve(UserResolverChain.java:52) 
    ... 91 more 

그 Gradle을 (그루비가)는 PIN을 요청 같은 표준 자바 SSL 속성을 지원 보이지만 그것은 성공하지 않습니다.

java URL url = new URL("..."); 
InputStreamReader is = new InputStreamReader(url.openStream()); 
BufferedReader in = new BufferedReader(is); 
String inputLine; 
while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine); 
in.close(); 

이처럼 호출 잘 작동 : :이 같은 간단한 자바 클래스를 실행하는 경우

모든 것이 잘 작동

java -Djava.security.debug=sunpkcs11 -Djavax.net.ssl.trustStore=NONE -Djavax.net.ssl.trustStoreType=pkcs11 -Djavax.net.ssl.keyStore=NONE -Djavax.net.ssl.keyStoreType=pkcs11 jget/JGet 

ssl.keyStoreType = PKCS11 " \

이것은 내 build.gradle입니다.

task wrapper(type: Wrapper) { gradleVersion = "1.0-milestone-9" } 
apply plugin: "java" 
repositories { maven { url "https://developer/nexus/content/repositories/thirdparty" } } 
dependencies { compile "org.projectx:tools:1.0" } 

아무도 도와 줄 수 있습니까?

답변

0

milestone-6 milestone-5와 함께 작동 한 이후로 버그가있는 것으로 보았 기 때문에 http://issues.gradle.org/browse/GRADLE-2234에 문제점이 있습니다. 아무도이 기능을 필요로하지 않으면 milestone-5를 사용하여이 버그가 수정 될 때까지 기다리십시오.

+0

이제 이미 해결 된 것 같습니다. 아마 당신은 당신의 자신의 대답을 수락 할 수 있습니다) – sandrstar