스프링 도구 모음 - 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비트를 사용합니다.저는 또한 기업 대리인의 뒤에 있습니다.저는 그것이 저에게 효과가 있도록 하기 위해 다음과 같은 일을 했습니다.만약 당신이 비슷한 상황에 있다면 그것은 당신에게 도움이 될 것입니다.
회사 인증서 내보내기(다른 간편한 방법이 있을 수 있음)
- Chrome에서, 저는 https://start.spring.io 에 갔습니다.
- 위치 표시줄에서 https 옆에 있는 '잠금' 기호를 클릭했습니다.
- 다음 팝업에서 '인증서(유효)'를 선택했습니다.
- 결과 대화 상자에서 '인증서 경로' 탭을 클릭하고 인증서 경로 트리 아래에서 루트 노드를 선택한 다음 '인증서 보기'를 클릭합니다.
- 결과 대화 상자에서 '상세 정보' 탭을 클릭한 다음 '파일로 복사'를 클릭합니다.
- '다음'을 클릭하면 '내보내기 마법사'가 나타납니다.
- 인증서 형식을 기본값인 'DER encoded...'로 유지한 후 'Next'를 클릭합니다.
- 인증서에 대해 제공된 파일 이름(.cer 확장명)입니다.
- 마침을 클릭했습니다.
위의 단계에서는 신뢰 저장소(캐럿)로 가져온 파일로 인증서를 내보냈습니다.
가져오기
- 관리자 권한으로 '명령' 프롬프트를 열어 인증서 가져오기
- 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
동일한 문제가 발생하여 다음을 시도했습니다.창 -> 기본 설정 -> 네트워크 연결 모드를 수동으로 변경합니다.
이제는 잘 작동합니다.
방법은 를 가장간솔인설것다에 하는 것입니다.cacerts
JDK의 키 저장소입니다.
<JAVA_HOME>/bin/keytool -import -alias CorpProxy -keystore <JAVA_HOME>/jre/lib/security/cacerts -file your_corp_cert.crt
암호를 됩니다.changeit
결석으로
위의 작업이 없는 경우 아래 단계를 수행합니다.저도 같은 문제로 회사 네트워크에서 일을 했기 때문에 잘 작동합니다.
- STS 도구가 열려 있으면 닫습니다.
- STS.ini 파일을 찾습니다(대부분 STS 도구를 설치하고 STS.exe가 있는 곳).
STS.ini를 편집합니다.하단에 다음 두 줄 추가(JDK 위치 사용, 아래 하나는 샘플일 뿐)
-Djavax.net .ssl.trustStore=C:\Program Files\Java\jdk1.8.0_20\jre\lib\security\cacerts
-Djava.net .ssl.trustStorePassword=변경
STS.ini를 저장하고 STS.exe를 다시 시작합니다.
제 경우에는 효과가 있습니다.감사해요.
URL http://start.spring.io 에서 https 대신 http를 사용해 보십시오.
다음 오류가 해결됩니다. "SunCertPathBuilder"예외: 요청한 대상에 대한 올바른 인증 경로를 찾을 수 없습니다."
사네워크가관권없있수로 수 .cacerts
는 관리자 에서 STS를 하는 데 이 됩니다.
%userprofile% 디렉토리 확인
- 시작 -> 실행
- 형자
%userprofile%
그리고 엔터를 누릅니다. - 이렇게 하면 쓰기 권한이 있는 폴더가 열립니다.경로를 기록합니다.
회사 프록시 인증서 내보내기
- Chrome에서 https://start.spring.io 으로 이동합니다.
- 위치 표시줄에서 https 옆에 있는 '잠금' 기호를 클릭합니다.
- 다음 팝업에서 '인증서(유효)'를 선택합니다.
- 결과 대화 상자에서 '인증서 경로' 탭을 클릭하고 인증서 경로 트리 아래에서 루트 노드를 선택한 다음 '인증서 보기'를 클릭합니다.
- 결과 대화 상자에서 '상세 정보' 탭을 클릭한 다음 '파일로 복사'를 클릭합니다.
- 그러면 '내보내기 마법사'가 표시되고 '다음'을 클릭합니다.
- 인증서 형식을 기본값인 'DER encoded...'로 유지하고 '다음'을 클릭합니다.
- 제공하다
CorpRootCA.cer
인증서의 파일 이름으로 저장%userprofile%/cacerts
폴더를 누릅니다.다음을 생성해야 할 수도 있습니다.cacerts
의 폴더%userprofile%
- 마침을 클릭]
STS에서 사용하는 JRE 경로 식별
카세트 파일 복사
- 탐색기에 설치된 JRE에서 jre 위치로 이동합니다.
- 에 가다
lib/security
그리고 복사합니다.cacerts
파일 - 에 가다
%userprofile%/cacerts
그리고 그것을 국장 안에 붙입니다.
키 도구를 사용하여 회사 프록시 인증서 추가
- 탐색기에 설치된 JRE에서 jre 위치로 이동합니다.
- 유형
cmd
URL 표시줄에서 명령 프롬프트를 엽니다. ./bin/keytool -import -alias CorpProxy -keystore %userprofile%/cacerts/cacerts -file %userprofile%/cacerts/CorpRootCA.cer -storepass changeit
'storepass'는 기본 암호인 'change it'이어야 합니다.변경된 경우 올바른 스토어 패스를 사용합니다.
STS가 새 인증서 저장소를 가리키도록 만드는 중
- SpringToolSuite 실행 파일이 들어 있는 폴더 열기
- 실행 파일과 동일한 파일을 가진 구성 파일이 있습니다.나의 경우에는.
SpringToolSuite4.ini
파일 열기 - 다음 행을 변경한 후 추가합니다.
%userprofile
사용자의 디렉토리와 일치합니다.갱신하다trustStorePassword
필요에 따라changeit
기본값입니다.
-Djavax.net.ssl.trustStore=%userprofile%\cacerts\cacerts -Djava.net.ssl.trustStorePassword=changeit
- 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"
참고: 다른 사람들이 제안한 대로 스프링 인증서도 추가합니다.
저는 두 단계를 거쳐서 문제를 해결할 수 있었습니다.
- 먼저 https://start.spring.io 에 있는 인증서를 jdk cacerts로 가져왔습니다.
드디어 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
'programing' 카테고리의 다른 글
푸시 인증서 갱신 및 현재 앱 스토어 앱 작동 유지 (0) | 2023.07.09 |
---|---|
스프링 부트 2.x 응용 프로그램에서 max-http-header-size를 설정하는 방법 (0) | 2023.07.09 |
regex_interval의 절로 연결 (0) | 2023.07.09 |
앱이 백그라운드에 있을 때 메시지 수신 시 Firebase가 호출되지 않음 (0) | 2023.07.09 |
로그아웃 시 세션을 지우는 방법 (0) | 2023.07.09 |