๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ ์ผ์ง€ ๐Ÿ‘ฉ‍๐Ÿ’ป

keytool๋กœ HTTPS ์ธ์ฆ์„œ(p12) ๋งŒ๋“ค๊ธฐ! ์™„์ „ ์‰ฌ์šด ์„ค๋ช…

by chuyj15 2025. 6. 27.
728x90
๋ฐ˜์‘ํ˜•
SMALL

์•ˆ๋…•ํ•˜์„ธ์š”~  ๐Ÿ˜„
์˜ค๋Š˜์€ Spring Boot์—์„œ HTTPS๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜ HTTP/2.0์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๊ผญ ํ•„์š”ํ•œ
"self-signed ์ธ์ฆ์„œ"๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•ด์š”!

๊ทผ๋ฐ... keytool ๋ช…๋ น์–ด ๋ณด๋ฉด ๋ญ”๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ฒŒ ์ƒ๊ฒผ์ฃ ?
๊ฑฑ์ • ๋งˆ์„ธ์š”. ์˜ค๋Š˜์€ ๊ทธ๊ฑธ ์•„์ฃผ ์‰ฝ๊ฒŒ ํ’€์–ด๋“œ๋ฆด๊ฒŒ์š”!

 


๐Ÿงฉ ๋จผ์ €, ์ด๊ฑด ๋ญํ•˜๋Š” ๋ช…๋ น์–ด๋ƒ๋ฉด?

keytool -genkeypair ...

 


์ด ๋ช…๋ น์–ด๋Š” Java์—์„œ ์ œ๊ณตํ•˜๋Š” keytool์ด๋ผ๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ
"์ธ์ฆ์„œ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ(= keystore)"์„ ํ•˜๋‚˜ ๋งŒ๋“œ๋Š” ์ž‘์—…์ด์—์š”.

Spring Boot์—์„œ HTTPS๋ฅผ ์“ธ ๋•Œ๋Š”

๐Ÿ‘‰ “์ด ์„œ๋ฒ„๊ฐ€ ์ง„์งœ ๋‚ด๊ฐ€ ์ ‘์†ํ•˜๋ ค๋Š” ์„œ๋ฒ„์ธ์ง€?”
๋ฅผ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ ํŒŒ์ผ(p12)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

โœ… ์‹ค์ œ ๋ช…๋ น์–ด๋Š” ์ด๋ ‡์Šต๋‹ˆ๋‹ค:

keytool -genkeypair \
  -alias my-local-cert \
  -keyalg RSA \
  -keysize 2048 \
  -storetype PKCS12 \
  -keystore keystore.p12 \
  -validity 3650 \
  -storepass 123456 \
  -keypass 123456 \
  -dname "CN=localhost, OU=Dev, O=Local, L=Seoul, ST=Seoul, C=KR"


๐Ÿ“ ๋ช…๋ น์–ด๊ฐ€ ๊ธธ์ง€๋งŒ, ์‚ฌ์‹ค ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ์˜๋ฏธ๊ฐ€ ์žˆ์–ด์š”.
์•„๋ž˜์—์„œ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”!

๐Ÿ” ์˜ต์…˜ ํ•˜๋‚˜ํ•˜๋‚˜ ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”!
์˜ต์…˜                 ์„ค๋ช…
-genkeypair ๊ณต๊ฐœํ‚ค + ๋น„๊ณต๊ฐœํ‚ค ์Œ์„ ์ƒ์„ฑ (์ฆ‰, ์ธ์ฆ์„œ ๋งŒ๋“ค๊ธฐ!)
-alias my-local-cert : ์ด ์ธ์ฆ์„œ์— ๋ถ™์ผ ์ด๋ฆ„ (๋ณ„๋ช…). Spring Boot ์„ค์ •์—์„œ๋„ ์ด ์ด๋ฆ„์„ ์จ์š”
-keyalg RSA : ์–ด๋–ค ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ธ ๊ฑด์ง€ (๋Œ€๋ถ€๋ถ„ RSA๋ฅผ ์”๋‹ˆ๋‹ค)
-keysize 2048 : ์•”ํ˜ธํ™” ํ‚ค์˜ ๊ธธ์ด (2048๋น„ํŠธ๊ฐ€ ์ ๋‹นํžˆ ์•ˆ์ „ํ•˜๊ณ  ์ผ๋ฐ˜์ !)
-storetype PKCS12 : ์ €์žฅ ๋ฐฉ์‹. PKCS12๋Š” Spring Boot์—์„œ ์‰ฝ๊ฒŒ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์ด์—์š”
-keystore keystore.p12 : ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ๋กœ ๋งŒ๋“ค์–ด์งˆ ์ธ์ฆ์„œ ํŒŒ์ผ ์ด๋ฆ„
-validity 3650 : ์ธ์ฆ์„œ ์œ ํšจ๊ธฐ๊ฐ„ (์—ฌ๊ธฐ์„  3650์ผ = 10๋…„!)
-storepass 123456 : ์ธ์ฆ์„œ ํŒŒ์ผ(p12)์„ ์—ด๊ธฐ ์œ„ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ
-keypass 123456 : ๋‚ด๋ถ€ ํ‚ค์— ๋Œ€ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ (๋ณดํ†ต storepass๋ž‘ ๋˜‘๊ฐ™์ด ํ•ด๋„ OK)
-dname "..." " ์ธ์ฆ์„œ์— ๋“ค์–ด๊ฐˆ ์‹ ์› ์ •๋ณด (์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ• ๊ฒŒ์š”!)

 


๐Ÿ‘ค -dname ์† ์‹ ์› ์ •๋ณด ๊ตฌ์„ฑ๋„ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”!


-dname ์•ˆ์— ์žˆ๋Š” ๋ฌธ์ž์—ด์€ ์ธ์ฆ์„œ์— ๋‹ด๊ธธ ์ฃผ์ธ์˜ ์ •๋ณด์˜ˆ์š”:

CN=localhost, OU=Dev, O=Local, L=Seoul, ST=Seoul, C=KR


ํ•ญ๋ชฉ                 ์˜๋ฏธ
CN=localhost :  Common Name. ์ธ์ฆ์„œ์˜ ๋„๋ฉ”์ธ ์ด๋ฆ„! (๋กœ์ปฌ ํ…Œ์ŠคํŠธ๋‹ˆ๊นŒ localhost)
OU=Dev : ๋ถ€์„œ ์ด๋ฆ„ (์˜ˆ: ๊ฐœ๋ฐœํŒ€)
O=Local : ์กฐ์ง ์ด๋ฆ„ (ํšŒ์‚ฌ ์ด๋ฆ„ ๋“ฑ)
L=Seoul  : ๋„์‹œ
ST=Seoul : ๋„/์ฃผ ์ด๋ฆ„
C=KR : ๊ตญ๊ฐ€ ์ฝ”๋“œ (ํ•œ๊ตญ = KR)

์ด ์ •๋ณด๋Š” ์ธ์ฆ์„œ ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณผ ๋•Œ ํ‘œ์‹œ๋ผ์š”.

 

 


๐Ÿ“ฆ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ค ํŒŒ์ผ์ด ์ƒ๊ธฐ๋ƒ๋ฉด?


keystore.p12๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ์ƒ๊น๋‹ˆ๋‹ค.
์ด ํŒŒ์ผ์ด ๋ฐ”๋กœ HTTPS ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์‹ ๋ถ„์ฆ!

Spring Boot์—์„œ๋Š” ์ด๊ฑธ application.yml์— ๋“ฑ๋กํ•ด์„œ ์ด๋ ‡๊ฒŒ ์จ์š”:

server:
  ssl:
    key-store: classpath:keystore.p12
    key-store-password: 123456


๐Ÿ“ ์ฐธ๊ณ ๋กœ ์ด keystore.p12๋Š” src/main/resources ํด๋”์— ๋„ฃ๋Š” ๊ฑธ ์ถ”์ฒœ๋“œ๋ ค์š”!

๐Ÿ”’ ์ด๊ฑด "์ง„์งœ ์ธ์ฆ์„œ"์ธ๊ฐ€์š”?
โŒ ์•„๋‹™๋‹ˆ๋‹ค! ์ด๊ฑด self-signed, ์ฆ‰ ๋‚ด๊ฐ€ ๋‚˜๋ฅผ ์ธ์ฆํ•œ ์ธ์ฆ์„œ์—์š”.

๋ธŒ๋ผ์šฐ์ €์—์„  ๋ณด์•ˆ ๊ฒฝ๊ณ ๊ฐ€ ๋œจ์ง€๋งŒ, ๋กœ์ปฌ ํ…Œ์ŠคํŠธ์šฉ์œผ๋ก  ์ถฉ๋ถ„ํžˆ ์“ธ ์ˆ˜ ์žˆ์–ด์š”.
์‹ค์ œ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„  Let's Encrypt ๊ฐ™์€ CA(์ธ์ฆ๊ธฐ๊ด€)์—์„œ ์ธ์ฆ์„œ๋ฅผ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 


โœจ ์ •๋ฆฌ!


keytool ๋ช…๋ น์–ด๋Š” Spring Boot HTTPS ์„ค์ •์„ ์œ„ํ•œ ๋กœ์ปฌ ์ธ์ฆ์„œ ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋„๊ตฌ

๋งŒ๋“  ํŒŒ์ผ์€ keystore.p12

์„ค์ •ํ•  ๋• application.yml์— classpath: ๊ฒฝ๋กœ๋กœ ๋“ฑ๋ก

์‹ค์„œ๋น„์Šค์—์„  ์ง„์งœ ์ธ์ฆ์„œ๋ฅผ ์จ์•ผ ํ•˜์ง€๋งŒ, ๊ฐœ๋ฐœ ํ…Œ์ŠคํŠธ์—๋Š” self-signed๋ฉด ์ถฉ๋ถ„!

 

 


๐Ÿงก ๋„์›€์ด ๋˜์…จ๋‚˜์š”?
์ฒ˜์Œ ๋ณด๋ฉด ์–ด๋ ค์›Œ ๋ณด์ด์ง€๋งŒ, ํ•œ ๋ฒˆ ํ•ด๋ณด๋ฉด ์ •๋ง ์‰ฌ์›Œ์š”!
์ด์ œ Spring Boot์—์„œ HTTPS, HTTP/2.0๋„ ๊ฑฑ์ • ์—†๊ฒ ์ฃ ? ๐Ÿ˜Š
๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ํŽธํ•˜๊ฒŒ ์งˆ๋ฌธ ์ฃผ์„ธ์š”!


#SpringBoot #HTTPS #HTTP2 #keytool #keystore #๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ #์ž๋ฐ”์ธ์ฆ์„œ #๊ฐœ๋ฐœ์žํŒ 

ํ•ญ์ƒ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๋ธ”๋กœ๊ทธ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ™Œ

 

 

Spring Boot) ๋กœ์ปฌ์—์„œ HTTP/2.0 ์“ฐ๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”~ ๐Ÿ˜Ž์˜ค๋Š˜์€ Spring Boot๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ HTTP/2.0์„ ๋กœ์ปฌ์—์„œ๋„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”.์ฒ˜์Œ์—” ์ข€ ๋‚ฏ์„ค ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ•œ ๋ฒˆ ํ•ด๋ณด๋ฉด ์ •๋ง ์‰ฝ๊ณ  ์žฌ๋ฐŒ์Šต๋‹ˆ๋‹ค! ๐ŸŒ HTTP/2.0์ด ๋ญ๊ธธ๋ž˜?HTTP

chuyj15.tistory.com

 

 

 

728x90
๋ฐ˜์‘ํ˜•
LIST