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>