Maven에게 SSL 오류를 무시하고 모든 인증서를 신뢰하도록 지시하는 방법은 무엇입니까?


106

"mvn"명령을 자주 실행해야합니다.

mvn -f pom.xml clean install -Dmaven.test.skip=false --settings /Users/myhome/settings.xml -X -Djavax.net.ssl.trustStore=/Users/myhome/truststore.jks -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword=dummy -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol -U

다른 다양한 도메인과 통합해야하므로 현재 SSL 핸드 셰이크 오류를 방지하기 위해 내 truststore.jks에 인증서를 추가해야 할 때마다.

SSL 오류를 무시하도록 mvn을 구성 할 수있는 방법이 있습니까?

답변:


236

다음 명령 줄 매개 변수 중 하나 이상을 추가하여 SSL 인증서 검사를 비활성화 할 수 있습니다.

  • -Dmaven.wagon.http.ssl.insecure=true -사용자 생성 인증서에 대해 완화 된 SSL 검사를 사용합니다.
  • -Dmaven.wagon.http.ssl.allowall=true-서버의 X.509 인증서를 호스트 이름과 일치시킬 수 있습니다. 비활성화하면 수표와 같은 브라우저가 사용됩니다.
  • -Dmaven.wagon.http.ssl.ignore.validity.dates=true -인증서 날짜 문제를 무시합니다.

공식 문서 : http://maven.apache.org/wagon/wagon-providers/wagon-http/

간편한 복사 및 붙여 넣기를위한 oneliner는 다음과 같습니다.

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true

Ajay Gautam~/.mavenrc명령 줄에서 매번 지정할 필요가 없으므로 위의 내용을 파일에 추가 할 수도 있다고 제안했습니다 .

$ cat ~/.mavenrc 
MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true"

1
스프링 부트 / maven 프로젝트가 있고 maven-jaxb2-plugin을 사용하여 웹 서비스 소스를 생성하고 있습니다. 그러나 인증서가 만료되었습니다. 그래서 Eclipse에서 위의 도구로 maven 생성 소스를 실행 해 보았습니다. 하지만 이클립스 / 메이븐 환경에서 어떻게 해결할 수 있는지 "타임 스탬프 확인 실패"라는 오류가 발생합니다.
Mukun

14
대답은 나를 위해 작동하지 않습니다. 나는 maven 3.5.0을 사용하고 있는데 내가받은 예외는 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. 왜건은 MAven 3.5.0에서 작동합니까?
thlim

대신 신뢰 저장소 jks를 만들고 maven을이 jks 파일로 지정했습니다.
thlim

3
(Java 암호화 확장 기능 (JCE) 무제한 강도를 설치하여 JDK7을 | 위해 JDK8 받는다는 3.5.0에 나를 위해 수정 문제)
skadya

1
netbeans 6.8을 사용하여 UI를 통해 'Global Execution Options'의 netbeans maven 옵션에 옵션을 추가했으며 https를 사용하여 리포지토리에서 다운로드 할 수있었습니다.
Dan675

46

나를 위해 일한 대안은 settings.xml에 다음을 추가하여 Maven Central을 사용할 때 https : 대신 http :를 사용하도록 Maven에 지시하는 것입니다 .

<settings>
   .
   .
   .
  <mirrors>
    <mirror>
        <id>central-no-ssl</id>
        <name>Central without ssl</name>
        <url>http://repo.maven.apache.org/maven2</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
   .
   .
   .
</settings>

귀하의 마일리지는 물론 다를 수 있습니다.


2
감사합니다. SSL이 작동하면 되돌릴 수 있다는 점에 유의하십시오. 이로 인해 사용자가 무엇을 알고있는 호스트가 될 수있는 비표준 리포지토리를 추가 할 수 있기 때문입니다
asgs

3
Maven 리포지토리가 http 연결을 비활성화했기 때문에 2020 년 1 월부터 작동하지 않습니다
Justin

1
Maven repo가 ​​Http 연결을 비활성화했기 때문에 2020 년 1 월 이후이 오류가 발생합니다. ReasonPhrase : HTTPS Required "
Justin

8

폴더를 ${USER_HOME}/.mvn 만들고 그 안에라는 파일을 넣으 maven.config십시오.

내용은 다음과 같아야합니다.

-Dmaven.wagon.http.ssl.insecure=true
-Dmaven.wagon.http.ssl.allowall=true
-Dmaven.wagon.http.ssl.ignore.validity.dates=true

도움이 되었기를 바랍니다.


명령 줄에서 이러한 매개 변수를 직접 사용하는 데 성공했지만 파일에 추가 할 때 여전히 실패했습니다
Justin

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.