์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ์ฟผ๋ฆฌ ์ต์ ํ
- Lombok
- ์คํ๋ง๋ถํธ
- JPA
- ์ฑ ์
- REST API
- ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด
- ํด๋ฆฐ์ฝ๋
- SRP
- ํ๋ ฅ
- ์บ์ฑ
- Refactor
- ๊ฐ์ฒด
- ์บก์ํ
- clean code
- JIT
- cache
- string
- ์๋ฐ
- ๊ฐ์ฒด์งํฅ
- ํด๋ฆฐ ์ฝ๋
- ์ธํฐํ๋ฆฌํฐ
- ์คํ๋ง
- ๋๋ฉ์ธ ๋ชจ๋ธ
- spring boot
- ๋ฆฌํฉํ ๋ง
- ์ถ์ํ
- Java
- ์ฌ์ฌ์ฉ์ฑ
- ์บ์
- Today
- Total
GO SIWOO!
[SpringBoot] - PKIX path building failed ์๋ฌ ๋ณธ๋ฌธ
๐์๋ฌ
์น ํ๋ก์ ํธ๋ฅผ ํ๋์ค ํ๊ธ ๋จ์ด์ ๋ป์ ๋ฐ๊ธฐ์ํด ํ๊ตญ์ด ๊ธฐ์ด์ฌ์ OpenAPI๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ํ์๋๋ฐ ํ๋์ ์ ์ฌ์ฉ์ ํ๋ค ๋ค์๊ณผ ๊ฐ์ ์๋ฌ ๋ฌธ๊ตฌ๊ฐ ๋จ๊ณ Postman์ ์ฌ์ฉํด ํ๋ก ํธ์๋ ์๋ฒ๋ก ๋ฆฌํดํ๋ ๊ฐ์ ์ดํด๋ณด๋ ์๋ฌด ๊ฐ๋ ๋ฆฌํดํ๊ณ ์์ง ์์๋ค.
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
๋น์ฅ ํ๋ก์ ํธ๋ฅผ ์งํ์ํค๋๋ฐ ์์ด์ ์ด๋ป๊ฒ๋ ๊ธฐ๋ฅ์ด๋ผ๋ ๊ตฌํ์ ํด์ผํ๋ค. ์๋ฌ์ ์ด๋ฅ๋ฅผ ์ฐพ์๋ณด๋ SSL ์ธ์ฆ์์ ๋ฌธ์ ๋ผ๊ณ ํ๋ค HTTPS ํต์ ์์ ์ฌ์ฉํ๋ SSL์ ์น ์๋ฒ์ ์ค์น๋ ์ธ์ฆ์์ธ๋ฐ ์ด ์ธ์ฆ์๊ฐ ์ ๋๋ก ๋ฐ๊ธ๋ฐ์ ๊ฒ์ธ์ง, ๊ณต๊ฐํค์ ๋ชฉ๋ก์ ๋ณด์ ํ๊ณ ์์ง ์์ ์ ๋ขฐํ์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค.
๐ํด๊ฒฐ์ฑ
๋จผ์ ์ฌ์ฉํ๊ณ ์๋ ๊ฐ๋ฐ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์๋ฐ
1.API ํธ์ถ ์ฃผ์, ์ธ์ฆํค์ API ํธ์ถ ๊ฒ์ ํค์๋๋ฅผ String ํ ๋ณ์์ ๋ด๋๋ค.
2. ๋จผ์ ์์ฑํ String ํ ๋ณ์๋ฅผ JAVA URL ํด๋์คํ ๋ณ์๋ก ๋ฐ๊พธ์ด์ค๋ค.
3. JAVA ๋ด์์ SSL ์ ์ฉ๋ ์ฌ์ดํธ์ ์ ๊ทผํ๊ธฐ ์ํด, ์ฆ API๋ฅผ ํธ์ถํ๊ธฐ ์ํด HttpURLConnection์ ์ ์ธํ๊ณ ๋จผ์ ์์ฑํ URL ๋ณ์๋ฅผ ์บ์คํ ํด ๋ฃ์ด์ค๋ค.
4. API๋ฅผ ํธ์ถํ๊ณ ๋ฐ์ ๊ฐ์ BufferReader๋ก ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ ํ ์์ฒญํ ํ๋ก ํธ์๋ ์๋ฒ๋ก ๋ฆฌํด์ ํด์ค๋ค.
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํด๋น ํ๋ก์ ํธ์ ์๋น์ค๊ฐ ์งํ์ด ๋๋๋ฐ ๋ค๋ฅธ ์๋น์ค์ ๊ฐ๋ฐ์ ์ํด์๋ ํด๋น ๊ธฐ๋ฅ์ด ๋ฐ๋์ ํ์ ํ์ผ๋ฏ๋ก ๊ธํ๋๋ก ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ์ฐพ์ ๋ณด์๋๋ฐ ์์ API๋ฅผ ํธ์ถํ๋ ์์ ์ ์ SSL ์ธ์ฆ์๋ฅผ ๋ฌด์ํ ํ API๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ด ์์๋ค.
๋จผ์ ์ด ๋ฐฉ๋ฒ์ ๋ณด์์์์ ์ด์๊ฐ ์๊ธธ ์ ์์ผ๋ฉฐ ๋จ์ ํ ์คํธ ์ฉ๋๋ก๋ง ์ฌ์ฉ์ ํด์ผํ๋ค.
public void sslTrustAllCerts() {
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
} };
SSLContext sc;
try {
sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
์์๊ฐ์ SSL์ ๋ฌด์ํ๋ ๋ฉ์๋๋ฅผ ์์ฑํ๊ณ ์๋ฌ๊ฐ ๋ฐ์ํ๋ API๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ํด๋น ๋ฉ์๋๋ฅผ ์คํ์์ผ์ฃผ๋ฉด ๋๋ค.
Postman์ ํตํด์ ํ์ธํ์ ๋ ๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ก ๋ฆฌํด์ ํด์ค ๊ฒ์ ๋ณผ ์ ์๋ค. ์ผ๋จ ์ด๋ ๊ฒ ์ฒ๋ฆฌ๋ฅผ ํด ๋ ํ ๋ณด์์ด์๊ฐ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๊ฟ๊ฒ ๋ค...