Hello, Java Keytool
๋ค์ด๊ฐ๋ฉฐ
Kafka ํด๋ฌ์คํฐ์ SSL ์ธ์ฆ์ ๊ตฌ์ถํ๋ ๊ฑธ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. Kafka ๋ฌธ์์ ์๋ฃ๋ฅผ ๋ฐ๋ผ๊ฐ๊ณ ์๋๋ฐ, keytool
์ด๋๊ฑธ ์ฌ์ฉํด์ SSL ์ธ์ฆ์๋ฅผ ๊ตฌ์ถํ๋๋ผ๊ตฌ์! ๊ทธ๋์ SSL/TLS์ ๋ํ ์ด๋ก ์ ๋ค์ ๋ณด๊ณ , openssl
๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฒ๊น์ง ๋ค์ ์ดํด๋ณด๊ณ ์ตํ๊ณ ์์์ต๋๋ค.โ
์ด์ ๋๋์ด Java์ keytool
์ ๋ํด์ ์ .๋ณต. ํ๊ณ ์ ํฉ๋๋ค! ใ
ใ
์์ข์ฃ!
keytool
์ด๋?
Java์์ ์ ๊ณตํ๋ ์ธ์ฆ์ ๋ฐ ํค ๊ด๋ฆฌ ๋๊ตฌ ์ ๋๋ค. JDK ๊ฐ๋ฐ ๋๊ตฌ์ ํจ๊ป ํฌํจ๋์ด ์์ต๋๋ค.
openssl
์์๋ ํค๋ฅผ .pem
, .key
, .crt
์ ๊ฐ์ด ํ์ผ ์ค์ฌ์ผ๋ก ๊ด๋ฆฌ ํ์ต๋๋ค. Java keytool
์ ํค๋ฅผ โ์ ์ฅ์โ์ ๋ณด๊ดํ๋ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์ ์ฅ์ ์์คํ
์ ํฌ๊ฒ โKeystoreโ์ โTruststoreโ ๋ ๊ฐ์ง ์ข
๋ฅ๋ก ๋๋๊ฒ ๋ฉ๋๋ค.
์ด ๋์ ๋ํด์๋ keytool
์ฌ์ฉ๋ฒ์ ๋จผ์ ์ดํด๋ณด๋ฉด์ ๋ค์์ ๊ฐ์ด ์ดํด๋ณด๊ฒ ์ต๋๋ค!
์์ํ๊ธฐ ์ ์ ๋ค์ ๊ฐ์กฐํ์๋ฉด, keytool
์ openssl
๊ณผ ์กฐํฉํด ์ฌ์ฉํ๋ ๋๊ตฌ ์
๋๋ค. openssl
์์ด keytool
๋ง ์ฌ์ฉํด์ ์์
ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ์์ฃผ ์ด๋ ต์ต๋๋ค.
๊ฐ์ธํค์ ์์ฒด ์๋ช ์ธ์ฆ์๋ฅผ keystore์ ์ ์ฅ
๋จผ์ ์๋ ๋ช ๋ น์ด๋ก ๊ฐ์ธํค์ ์ธ์ฆ์๋ฅผ ์์ฑ ํฉ๋๋ค.
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr \
-subj "/CN=localhost"
openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365
.key
์ .crt
ํ์ผ์ .p12
๋ก ๋ฌถ์ด์ค๋๋ค.
$ openssl pkcs12 -export -inkey server.key -in server.crt -out server.p12 -name myalias
Enter Export Password:
Verifying - Enter Export Password:
๋ง์ง๋ง์ผ๋ก .p12
๋ฅผ keytool
์ ์ฌ์ฉํด keystore์ import ํฉ๋๋ค.
$ keytool -importkeystore -destkeystore keystore.jks -srckeystore server.p12 \
-srcstoretype PKCS12 -alias myalias
Importing keystore server.p12 to keystore.jks...
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
์ ๊ฐ์ธํค์ ์์ฒด ์๋ช ์ธ์ฆ์๋ฅผ ๊ฐ์ด ์ ์ฅํ๋ ๊ฑธ๊น?
๊ทธ๋ฌ๊ฒ์, ๊ฐ์ธํค๋ง ๋ฐ๋ก ์ ์ฅํ๋๊ฒ ์๋๋ผ, ๊ท์ฐฎ๊ฒ ์์ฒด ์๋ช ์ธ์ฆ์๊น์ง ๋ง๋๋ ์ด์ ๊ฐ ๋ญ๊น์?
์ด์ ๋ ์์ฒด ์๋ช ์ธ์ฆ์๊ฐ ๊ณง ๊ฐ์ธํค์ ๋์ํ๋ ๊ณต๊ฐํค์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. Java์ Keystore ์ ์ฅ์๋ ์ด ์์ ํจ๊ป ๊ด๋ฆฌํ ์ ์๋๋ก ์ค๊ณ๋ ๊ตฌ์กฐ ์ ๋๋ค.
๊ฐ์ธํค๋ง ๊ฐ์ง๊ณ ์๋ค๋ฉด ์๋ฌด๊ฒ๋ ์ฆ๋ช ์ ๋ชป ํฉ๋๋ค. ์ธ์ฆ์๊ฐ ํจ๊ป ์์ด์ผ ๋๊ตฐ๊ฐ์๊ฒ ์์ ์ ๋ถ๊ฐ ์ ๋ณด์ ํจ๊ป ์ฆ๋ช ํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ง CA ์๋ช ๋ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ ๋ฐ์ง ์์ ์ํ์ด๊ธฐ ๋๋ฌธ์, ์์ฒด ์๋ช ์ธ์ฆ์๋ง ๋ง๋ค ์ ์๋ ์ํฉ ์ ๋๋ค.
๋ง์ฝ, ๋ฃจํธ CA๊ฐ ์๋ฆฝ๋์๋ค๋ฉด, ๋ฃจํธ CA์๊ฒ ์ธ์ฆ์ ์๋ช ์ ๋ค์ ๋ฐ๊ณ , ๊ธฐ์กด Keystore์ ์ ์ฅ๋ ์์ ์ธ์ฆ์๋ ๋ฃจํธ CA์๊ฒ ์๋ช ๋ฐ์ ์ธ์ฆ์๋ก ๊ต์ฒด ํฉ๋๋ค.
truststore์ ์ ๋ขฐํ ๋ฃจํธ CA๋ฅผ ๋ฑ๋ก
TODO?