Encryption types (์ํธํ ํ์ )
- Symmetric Encryption (์๋ณตํธํ ๊ฐ์ ํค)
- Asymmetric Encryption (์๋ณตํธํ ๋ค๋ฅธ ํค)[private - public key]
์.๋ณตํธํ ๊ตฌ์ฑ๋
์ํธํ๋์ด ์ ์ฅ๋ ์ ๋ณด๋ฅผ ๋ณตํธํํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค์์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ค.
์.๋ณตํธํ ์ฌ์ฉํด๋ณด๊ธฐ
config-server์ 'ecrypt.key' ๊ฐ์ bootstrap.yml์ ์ค์ ํด๋๋ค.
์๋ฒ๋ฅผ ์ฌ์คํํ์ฌ 'POST /encrypt'๋ฅผ ํตํด ์ํธํ๋ฅผ 'POST /decrypt'๋ฅผ ํตํด ๋ณตํธํ๋ฅผ ์งํํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ์ ๋ณด ์๋ณตํธํ ์ ์ฉ
user๋ง์ดํฌ๋ก์๋น์ค์ ์๋ datasource์ค์ ์ ๋ณด๋ฅผ password ์ํธํํ์ฌ config-server์ user-service.yml ํ์ผ๋ก ์ฎ๊ฒจ๋๊ณ user์๋น์ค์์๋ config-server์์ ํด๋น์ ๋ณด๋ฅผ ๋ณตํธํํด์ ์ฌ์ฉํ๋๋ก ํ๋ค.
- ์ ์ฉ ์์
- 1. config-server์ encrypt.key ์ค์
- 2. user์๋น์ค์ datasource์ ๋ณด๋ฅผ config-server์ ์ค์ ์ ๋ณด์ ์ํธํํ ๋ฐ์ดํฐ๋ก ์ ์ฅ
- 3. user์๋น์ค์์ ์ค์ ์ ๋ณด๋ฅผ ๋ณตํธํํ์ฌ ๊ฐ์ ธ์ database์ ์ ๊ทผ
๋น๋์นญํค - Keytool (์๋ณตํธํ๊ฐ ์๋ก ๋ค๋ฅธ ํค)
Public, Private Key ์ฌ์ฉํ๋ ๋น๋์นญํค
1. keytool์ ์ด์ฉํด Private key์์ฑํ๊ธฐ
$> keytool -genkeypair -alias apiEncryptionKey -keyalg RSA -dname "CN=yunhwan Park, OU=API Development, O=gmail.com, L=Seoul, C=KR" -keypass "test1234" -keystore apiEncryptionKey.jks -storepass "test1234"
- Key ์ ๋ณด ํ์ธํ๊ธฐ
$> keytool -list -keystore apiEncryptionKey.jks -v
[Enter password]
- ์ธ์ฆ์ ์์ฑํ๊ธฐ
$> keytool -export -alias apiEncryptionKey -keystore apiEncryptionKey.jks -rfc -f
[Enter Password]
- Public Key ์์ฑ๊ณผ ์ธ์ฆ
$> keytool -import -alias trustServer -file trustServer.cer -keystore publicKey.j
ks
2. config-server๊ฐ ์ฐธ์กฐํ encrytion.key ์ค์
bootstrap.yml ํ์ผ์ key์ ๋ณดํ์ผ ์ง์ ํด์ ์ฌ์ฉํจ
encrypt:
#key: abcdefghijkmasdfji1235412351234
key-store:
location: file://${user.home}/ํ์ผ๋๋ ํ ๋ฆฌ์ ๋ณด/apiEncryptionKey.jks
password: test1234
alias: apiEncryptionKey
3. 'POST /encrypt'๋ก ๋ง๋ ์ํธํ ๋ฐ์ดํฐ๋ฅผ token.secret ์ ๋ณด๋ก ์ค์
token:
expiration_time: 864000000
secret: '{cipher}AQAfgwczinpwugpt/nNxeZFAOxWnH' # ์ํธํ๋ ๋ฐ์ดํฐ
์ด์ User-service๋ config-server์ ํด๋น token.secret์ ๋ณด๋ฅผ ๋ณตํธํํ์ฌ ๊ฐ์ ธ์์ jwt ํ ํฐ์ ๋ง๋ค์ด ๋ฐํํ๊ฒ ๋๊ณ api-gateway์๋น์ค๋ jwt ํ ํฐ์ config-server์ ํด๋น token.secret์ ๋ณด๋ฅผ ๋ณตํธํํ์ฌ jwt๊ฐ์ด ์ ํจํ์ง parsingํ์ฌ ์ฌ์ฉํ๋ค.