study/๋ณด์
Keystore์ Truststore
dddzr
2025. 4. 10. 21:26
๐ 1. Keystore์ Truststore
SSL/TLS์ ์ฃผ์ ๊ตฌ์ฑ ์์์ด๋ฉฐ ssl ์ธ์ฆ์์ key ์ ์ฅํ๋ ์ ์ฅ์์ด๋ค.
*SSL ์ธ์ฆ์
- ์๋ฒ์ ์ ์์ ์ฆ๋ช ํ๋ฉฐ, CA(Certificate Authority)์์ ๋ฐ๊ธ๋ฐ๋๋ค.
- ์ธ์ฆ์์๋ ์๋ฒ์ ๊ณต๊ฐํค, ๋๋ฉ์ธ ์ด๋ฆ, ๋ง๋ฃ ๋ ์ง ๋ฑ์ด ํฌํจ๋๋ค.
- ๐Ssl ๊ฐ๋ & ์ธ์ฆ์ ๋ฐ๊ธ
โ 1-1. Keystore
- ์ธ์ฆ์์ ๊ฐ์ธ ํค(Private Key)๋ฅผ ์ ์ฅํ๋ ์ ์ฅ์.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ ์ ์ฆ๋ช ํ ๋ ์ฌ์ฉ.
- ์ญํ :
- ์๋ฒ ์ธก์์ ํด๋ผ์ด์ธํธ์๊ฒ ์์ ์ ์ ์์ ์ฆ๋ช ํ๊ธฐ ์ํด ์ฌ์ฉ.
- ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ๋ก ์์ ์ ์ธ์ฆํด์ผ ํ๋ ๊ฒฝ์ฐ(์: ์๋ฐฉํฅ SSL).
- ํ์: ์ผ๋ฐ์ ์ผ๋ก .jks, .p12, ๋๋ .pem.
โ 1-2. Truststore
- ์ ๋ขฐํ ์ ์๋ ์๋๋ฐฉ์ ๊ณต๊ฐ ํค ์ธ์ฆ์(Certificate)๋ฅผ ์ ์ฅํ๋ ์ ์ฅ์.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋๋ฐฉ์ ์ธ์ฆํ ๋ ์ฌ์ฉ.
- ์ญํ :
- ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ์ ์ธ์ฆ์๋ฅผ ํ์ธํ๊ณ ์ ๋ขฐํ ์ ์๋์ง ํ๋จ.
- ์๋ฒ ์ธก์์ ์ ๋ขฐํ ์ ์๋ ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ฅผ ํ์ธํ ๋ (์: ์๋ฐฉํฅ SSL).
- ํ์: ์ผ๋ฐ์ ์ผ๋ก .jks ๋๋ .pem.
๐ฅ1-3. keystore vs truststore
์ญํ | Keystore | Truststore |
๋ด์ฉ | ๋ณธ์ธ์ ์ธ์ฆ์ + ๊ฐ์ธ ํค | ์๋๋ฐฉ์ ์ธ์ฆ์(๋๋ CA ์ธ์ฆ์) |
๋ฐ๊ธ ์ฃผ์ฒด | ๋ณธ์ธ ๋๋ ์ธ์ฆ ๊ธฐ๊ด | ์๋๋ฐฉ(ํต์ ๋์) ๋๋ CA |
์ฉ๋ | ๋ด ์ ์์ ์ฆ๋ช | ์๋๋ฐฉ์ ์ ์์ ๊ฒ์ฆ |
ํต์ ํ๋ฆ | ๋ด๊ฐ ์๋ฒ ์ญํ ์ผ ๋ ์ฌ์ฉ๋จ | ๋ด๊ฐ ํด๋ผ์ด์ธํธ ์ญํ ์ผ ๋ ์ฌ์ฉ๋จ |
๐ 2. Keystore์ Truststore ์ค์ ์ด ํ์ํ ๊ฒฝ์ฐ
๐ฏ ์์ฝ
- ๋จ๋ฐฉํฅ SSL: ์ผ๋ฐ์ ์ผ๋ก truststore๋ง ์ค์ ํ๋ฉด ์ถฉ๋ถ.
- ์๋ฐฉํฅ SSL: keystore์ truststore๋ฅผ ๋ชจ๋ ์ค์ ํด์ผํจ.
โ 2-1. ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋จ๋ฐฉํฅ SSL (๊ธฐ๋ณธ ์ค์ )
์๋ฒ ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ๊ฒ์ฆํ ์ ์์ด์ผ ํ๋ค.
๐น๋ฐฉ๋ฒ
- Elasticsearch ์๋ฒ ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ์ truststore์ ์ถ๊ฐ.
- ํด๋ผ์ด์ธํธ๊ฐ ์ด ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ ์ ์๋๋ก truststore ๊ฒฝ๋ก๋ฅผ ์ค์ .
โ 2-2. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์๋ฐฉํฅ SSL (Mutual SSL)
ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋ ์๋ก์ ์ ์์ ๊ฒ์ฆํ๋ค.
๐น๋ฐฉ๋ฒ
- ํด๋ผ์ด์ธํธ๋ ์์ ์ ์ธ์ฆ์๋ฅผ keystore์ ์ ์ฅํ๊ณ ์๋ฒ์ ์ ๊ณต.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ ์ ์๋๋ก truststore์ ์ถ๊ฐ.
๐ 3. Spring Boot์์ SSL ์ค์ ๋ฐฉ๋ฒ
โ 3-1. Keystore์ Truststore ํ์ผ ์ค๋น
1๏ธโฃ์ธ์ฆ์๋ฅผ ๋ค์ด๋ก๋ (์์: Elasticsearch)
curl -k -XGET https://<elasticsearch-host>:9200 -o elasticsearch.crt
2๏ธโฃํด๋ผ์ด์ธํธ truststore์ ์ถ๊ฐ
keytool -import -trustcacerts -alias elasticsearch -file elasticsearch.crt -keystore truststore.jks -storepass <password>
โ 3-2. Application ์ค์
Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ application.yml ๋๋ application.properties ํ์ผ์์ SSL ์ค์ ์ ์ถ๊ฐ.
๐ application.yml
spring:
elasticsearch:
rest:
uris: https://<elasticsearch-host>:9200
ssl:
keystore:
location: classpath:keystore.jks
password: <keystore-password>
truststore:
location: classpath:truststore.jks
password: <truststore-password>
๐ application.properties
spring.elasticsearch.rest.uris=https://<elasticsearch-host>:9200
spring.elasticsearch.rest.ssl.keystore.location=classpath:keystore.jks
spring.elasticsearch.rest.ssl.keystore.password=<keystore-password>
spring.elasticsearch.rest.ssl.truststore.location=classpath:truststore.jks
spring.elasticsearch.rest.ssl.truststore.password=<truststore-password>