programing

스프링 도구 모음 - SunCertPathBuilder예외: 요청한 대상에 대한 올바른 인증 경로를 찾을 수 없습니다.

yellowcard 2023. 7. 9. 11:00
반응형

스프링 도구 모음 - SunCertPathBuilder예외: 요청한 대상에 대한 올바른 인증 경로를 찾을 수 없습니다.

STS 작업 중인데 새 스프링 부트 프로젝트를 생성하는 동안 다음 오류가 표시됩니다.

 SunCertPathBuilderException: unable to find valid certification path to requested target

서비스 URL로 https://start.spring.io 에 액세스하기 때문입니다.

저는 회사 네트워크에서 일하고 있으며 회사는 자체 인증서와 보안 규칙을 가지고 있습니다.저는 웹을 알아봤지만 STS에 대한 명확한 해결책을 찾을 수 없었습니다.지정된 URL에 대한 STS의 인증 경로를 어떻게 추가해야 합니까?어떤 도움이든 감사합니다.

이제 http가 https로 리디렉션되는 것 같습니다.따라서 https를 http로 변경하면 작동하지 않을 수 있습니다.저는 디지털 인증서에 거의 익숙하지 않습니다.하지만, 저는 그것이 저에게 효과가 있도록 하기 위해 제가 해야 할 일을 간단히 나열했습니다.이것이 아마도 @Strelok이 제안한 것입니다.

Windows 10 및 JDK 1.8.0_144 64비트를 사용합니다.저는 또한 기업 대리인의 뒤에 있습니다.저는 그것이 저에게 효과가 있도록 하기 위해 다음과 같은 일을 했습니다.만약 당신이 비슷한 상황에 있다면 그것은 당신에게 도움이 될 것입니다.

회사 인증서 내보내기(다른 간편한 방법이 있을 수 있음)

  1. Chrome에서, 저는 https://start.spring.io 에 갔습니다.
  2. 위치 표시줄에서 https 옆에 있는 '잠금' 기호를 클릭했습니다.
  3. 다음 팝업에서 '인증서(유효)'를 선택했습니다.
  4. 결과 대화 상자에서 '인증서 경로' 탭을 클릭하고 인증서 경로 트리 아래에서 루트 노드를 선택한 다음 '인증서 보기'를 클릭합니다.
  5. 결과 대화 상자에서 '상세 정보' 탭을 클릭한 다음 '파일로 복사'를 클릭합니다.
  6. '다음'을 클릭하면 '내보내기 마법사'가 나타납니다.
  7. 인증서 형식을 기본값인 'DER encoded...'로 유지한 후 'Next'를 클릭합니다.
  8. 인증서에 대해 제공된 파일 이름(.cer 확장명)입니다.
  9. 마침을 클릭했습니다.

위의 단계에서는 신뢰 저장소(캐럿)로 가져온 파일로 인증서를 내보냈습니다.

가져오기

  • 관리자 권한으로 '명령' 프롬프트를 열어 인증서 가져오기
  • Java 설치의 bin 디렉토리로 이동했습니다(jre/bin이 경로에 있는 경우 이 단계는 필요하지 않습니다).
  • 다음을 실행했습니다.

    C:\Program Files\Java\jre1.8.0_144\bin>keytool -importcert -alias your-alias -keystore "C:\Program Files\Java\jre1.8.0_144\lib\security\cacerts" -storepass changeit -file C:\certificate-file-location\saved-certificate-file.cer

(필요에 따라 Java 위치, 인증서 파일 위치 및 인증서 파일 이름을 대체합니다.'store pass'는 'change it'이어야 합니다.)

다시 시작된 STS

동일한 문제가 발생하여 다음을 시도했습니다.창 -> 기본 설정 -> 네트워크 연결 모드를 수동으로 변경합니다.

이제는 잘 작동합니다.

방법은 를 가장간솔인설것다에 하는 것입니다.cacertsJDK의 키 저장소입니다.

<JAVA_HOME>/bin/keytool -import -alias CorpProxy -keystore <JAVA_HOME>/jre/lib/security/cacerts -file your_corp_cert.crt

암호를 됩니다.changeit결석으로

위의 작업이 없는 경우 아래 단계를 수행합니다.저도 같은 문제로 회사 네트워크에서 일을 했기 때문에 잘 작동합니다.

  1. STS 도구가 열려 있으면 닫습니다.
  2. STS.ini 파일을 찾습니다(대부분 STS 도구를 설치하고 STS.exe가 있는 곳).
  3. STS.ini를 편집합니다.하단에 다음 두 줄 추가(JDK 위치 사용, 아래 하나는 샘플일 뿐)

    -Djavax.net .ssl.trustStore=C:\Program Files\Java\jdk1.8.0_20\jre\lib\security\cacerts

    -Djava.net .ssl.trustStorePassword=변경

  4. STS.ini를 저장하고 STS.exe를 다시 시작합니다.

제 경우에는 효과가 있습니다.감사해요.

URL http://start.spring.io 에서 https 대신 http를 사용해 보십시오.

다음 오류가 해결됩니다. "SunCertPathBuilder"예외: 요청한 대상에 대한 올바른 인증 경로를 찾을없습니다."

enter image description here

enter image description here

사네워크가관권없있수로 수 .cacerts는 관리자 에서 STS를 하는 데 이 됩니다.

  1. %userprofile% 디렉토리 확인

    • 시작 -> 실행
    • 형자%userprofile%그리고 엔터를 누릅니다.
    • 이렇게 하면 쓰기 권한이 있는 폴더가 열립니다.경로를 기록합니다.
  2. 회사 프록시 인증서 내보내기

    • Chrome에서 https://start.spring.io 으로 이동합니다.
    • 위치 표시줄에서 https 옆에 있는 '잠금' 기호를 클릭합니다.
    • 다음 팝업에서 '인증서(유효)'를 선택합니다.
    • 결과 대화 상자에서 '인증서 경로' 탭을 클릭하고 인증서 경로 트리 아래에서 루트 노드를 선택한 다음 '인증서 보기'를 클릭합니다.
    • 결과 대화 상자에서 '상세 정보' 탭을 클릭한 다음 '파일로 복사'를 클릭합니다.
    • 그러면 '내보내기 마법사'가 표시되고 '다음'을 클릭합니다.
    • 인증서 형식을 기본값인 'DER encoded...'로 유지하고 '다음'을 클릭합니다.
    • 제공하다CorpRootCA.cer인증서의 파일 이름으로 저장%userprofile%/cacerts폴더를 누릅니다.다음을 생성해야 할 수도 있습니다.cacerts의 폴더%userprofile%
    • 마침을 클릭]
  3. STS에서 사용하는 JRE 경로 식별

    • STS 열기
    • 창 -> 환경설정을 누릅니다.
    • Java -> 설치된Installed JRE Window JRE 클릭
    • STS에서 사용하는 위치 복사
  4. 카세트 파일 복사

    • 탐색기에 설치된 JRE에서 jre 위치로 이동합니다.
    • 에 가다lib/security그리고 복사합니다.cacerts파일
    • 에 가다%userprofile%/cacerts그리고 그것을 국장 안에 붙입니다.
  5. 키 도구를 사용하여 회사 프록시 인증서 추가

    • 탐색기에 설치된 JRE에서 jre 위치로 이동합니다.
    • 유형cmdURL 표시줄에서 명령 프롬프트를 엽니다.
    • ./bin/keytool -import -alias CorpProxy -keystore %userprofile%/cacerts/cacerts -file %userprofile%/cacerts/CorpRootCA.cer -storepass changeit

    'storepass'는 기본 암호인 'change it'이어야 합니다.변경된 경우 올바른 스토어 패스를 사용합니다.

  6. STS가 새 인증서 저장소를 가리키도록 만드는 중

    • SpringToolSuite 실행 파일이 들어 있는 폴더 열기
    • 실행 파일과 동일한 파일을 가진 구성 파일이 있습니다.나의 경우에는.SpringToolSuite4.ini파일 열기
    • 다음 행을 변경한 후 추가합니다.%userprofile사용자의 디렉토리와 일치합니다.갱신하다trustStorePassword필요에 따라 changeit기본값입니다.
-Djavax.net.ssl.trustStore=%userprofile%\cacerts\cacerts
-Djava.net.ssl.trustStorePassword=changeit
  1. STS를 다시 시작하면 더 이상 던지지 않아야 합니다.

SunCertPathBuilder예외: 요청한 대상에 대한 올바른 인증 경로를 찾을 수 없습니다.

아래를 추가하여 일식을 만듭니다.이니

-Djavax.net.ssl.trustStore=C:\Program Files\Java\jdk1.8.0_20\jre\lib\security\cacerts
-Djava.net.ssl.trustStorePassword=changeit

저를 위해 일했습니다.

Eclipse에서 오류 로그 보기를 보고 이 문제를 해결할 수 있었고 GitHub 웹사이트에서 다운로드하려고 했습니다.키스토어를 사용한 GitHub URL 인증서를 추가하여 작동했습니다.

keytool -import -alias cert4 -keystore "C:\Users\A\Downloads\jdk-17.0.6+10\lib\security\cacerts" -storepass changeit -file "C:\Users\A\Downloads\Zscaler Root CA.crt"

keytool -import -alias cert5 -keystore "C:\Users\A\Downloads\jdk-17.0.6+10\lib\security\cacerts" -storepass changeit -file "C:\Users\A\Downloads\Zscaler Intermediate Root CA (zscaler.net).crt"

keytool -import -alias cert6 -keystore "C:\Users\A\Downloads\jdk-17.0.6+10\lib\security\cacerts" -storepass changeit -file "C:\Users\A\Downloads\Zscaler Intermediate Root CA (zscaler.net) (t)_.crt"

keytool -import -alias cert7 -keystore "C:\Users\A\Downloads\jdk-17.0.6+10\lib\security\cacerts" -storepass changeit -file "C:\Users\A\Downloads\github.com"

참고: 다른 사람들이 제안한 대로 스프링 인증서도 추가합니다.

저는 두 단계를 거쳐서 문제를 해결할 수 있었습니다.

  1. 먼저 https://start.spring.io 에 있는 인증서를 jdk cacerts로 가져왔습니다.
  2. 드디어 SpringToolSuite4에 TrustStore 및 trustStore 비밀번호 경로를 추가했습니다.ini 파일.

    -Djavax.net .ssl.trustStore=C:\Program Files\Java\jdk1.8.0_201\jre\lib\security\cacerts

    -Djava.net .ssl.trustStorePassword=변경

저는 SSL 인증서를 CAERTS 파일로 가져와서 문제를 해결했습니다.

그러나 Eclipse/STS는 기본적으로 다음과 같은 자체 JRE(플러그인 폴더에 있음)를 사용합니다.

(STS-RELEASE)\plugins\org. 이클립스.just j.openjdk.hotspot.jre.full.win32.x86_64_16.0.2.v20210721-1149\jre\lib\security\certs

MacOS 사용자의 경우:

# step 1
# execute the command to get the certificates
openssl s_client -showcerts -connect start.spring.io:443

# copy the all certificates, stating in: Certificate chain (including this line)
# Ending in the last: -----END CERTIFICATE-----

# step 2
# create the cert file with this content
mkdir $HOME/certs
touch $HOME/certs/root.crt
vim $HOME/certs/root.crt
# paste the cert content

# step 3
# import the cert
$JAVA_HOME/bin/keytool -importcert -alias your-alias -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file $HOME/certs/root.crt

언급URL : https://stackoverflow.com/questions/50764343/spring-tool-suite-suncertpathbuilderexception-unable-to-find-valid-certificati

반응형