๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
BE/๐Ÿƒ Spring

Spring boot ํ”„๋กœ์ ํŠธ์— SSL ์ธ์ฆ์„œ ์ ์šฉํ•˜๊ธฐ

by ํ‹ด๋”” 2024. 7. 15.
๋ฐ˜์‘ํ˜•

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์‚ฌ์„ค ์ธ์ฆ SSL ์ ์šฉ์ž…๋‹ˆ๋‹ค. ์ž์ฒด ์„œ๋ช… SSL์€ ๋‹ค๋ฅธ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์„ธ์š”! ๐Ÿ™‡

 

์ €์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์ฒจ๋ถ€ ํŒŒ์ผ์„ ์ œ๊ณต ๋ฐ›์•˜๋Š”๋ฐ ํŒŒ์ผ ์ด๋ฆ„์€ ๋‹ฌ๋ผ๋„ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์„ฑ์œผ๋กœ ๋˜์–ด ์žˆ์„ ๊ฑฐ์—์š”!

.crt.pem

์„œ๋ฒ„ ์ธ์ฆ์„œ PEM

 

.key.pem

๊ฐœ์ธํ‚ค PEM

 

(์ด๋ฏธ .jks๋ฅผ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋‹ˆ ํ™•์ธํ•ด๋ณด์„ธ์š”! ์ด๋ฏธ .jks๊ฐ€ ์žˆ๋‹ค๋ฉด jks ๋งŒ๋“œ๋Š” ๊ณผ์ •์€ ๊ฑด๋„ˆ ๋›ฐ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค!)

 

์ด ๋‘๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉํ•ด์„œ .p12๋ฅผ ๋งŒ๋“ค๊ณ  .p12๋ฅผ .jks๋กœ ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

openssl pkcs12 -export -in [์„œ๋ฒ„์ธ์ฆ์„œ.pem] -inkey [๊ฐœ์ธํ‚ค.pem] -out [์ƒ์„ฑํ•  ํŒŒ์ผ์ด๋ฆ„.p12] -name [alias ์ด๋ฆ„]

 

Enter Export Password:

Verifying - Enter Export Password:

์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์„ ๊ฑฐ์น˜๋ฉด ๊ฐ™์€ ๊ฒฝ๋กœ์— .p12 ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. 

 

keytool -importkeystore -srckeystore [์ง€์ •ํ•œ ํŒŒ์ผ์ด๋ฆ„].p12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype JKS

 

๋‹ค์Œ์œผ๋กœ keytool์„ ์‚ฌ์šฉํ•ด์„œ .p12๋ฅผ .jks ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ€์ƒ ํ‚ค ์ €์žฅ์†Œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ์ด ๋‚˜์˜ค๋ฉด jks ํŒŒ์ผ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ด ์ค๋‹ˆ๋‹ค. 

์ด๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ์„ค์ •์— ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๊ธฐ์–ตํ•ด ๋‘ก๋‹ˆ๋‹ค.

 

์†Œ์Šค ํ‚ค ์ €์žฅ์†Œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ์ด ๋‚˜์˜ค๋ฉด p12๋ฅผ ๋งŒ๋“ค๋•Œ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ ์Šคํ”„๋ง ๋ถ€ํŠธ ์„ค์ •์— ์‚ฌ์šฉํ•  alias๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

keytool -list -v -keystore [ํŒŒ์ผ๋ช….jks]

 

alias ํ˜น์€ ๋ณ„์นญ ์ด๋ฆ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ง€์ •ํ•œ alias์ธ๊ฑธ ํ™•์ธํ•˜๊ณ  ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ‘๋‹ˆ๋‹ค.

 

server.port=[ํฌํŠธ๋ฒˆํ˜ธ]
server.ssl.key-store=classpath:[ํŒŒ์ผ์ด๋ฆ„].jks
server.ssl.key-store-password=[jks์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ]
server.ssl.key-alias=[์ง€์ •ํ•œ alias ์ด๋ฆ„]

 

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•œ ๋’ค localhost์— ์ ‘์†ํ•˜๋ฉด

http์—์„œ๋Š” 

Bad Request
This combination of host and port requires TLS.

 

์ด๋ ‡๊ฒŒ ๋œจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

https์—์„œ๋Š” ๊ฒฝ๊ณ ์ฐฝ์ด ๋œฐํ…๋ฐ ์ด๋Š” ๋กœ์ปฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋œจ๋Š” ๊ฒƒ์ด๊ณ 

์‹ค์ œ ์„œ๋ฒ„์— ๋ฐฐํฌ์— ์›นํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋ฉด

๊ฒฝ๊ณ  ์—†์ด ์ ์šฉ๋œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 


ssl์ด๋ž€?

์›น ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋จ

 

์‚ฌ์„ค SSL Vs. ์ž์ฒด ์„œ๋ช… SSL

์‚ฌ์„ค์˜ ๊ฒฝ์šฐ ์ธ์ฆ๊ธฐ๊ด€์— ์˜ํ•ด ๊ฒ€์ฆ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ ๋ขฐ๋จ

์ž์ฒด ์„œ๋ช…์˜ ๊ฒฝ์šฐ ์™ธ๋ถ€ ๊ฒ€์ฆ์ด ๋”ฐ๋กœ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ ๋ขฐ๋˜์ง€ ์•Š์Œ

๋”ฐ๋ผ์„œ ์ƒ์šฉ ์›น์‚ฌ์ดํŠธ์˜ ๊ฒฝ์šฐ ์‚ฌ์„ค์„

๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” ์ž์ฒด ์„œ๋ช…์„ ์ด์šฉํ•œ๋‹ค.

 

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€