Section 9: 설정 정보의 암호화 처리
- Encryption types
- JCE
- Symmetric Encryption
- Asymmetiric Encryption
Encryption types
- Symmetric Encryption (Shared)
- Asymmetric Encryption (RSA Keypair)
- Private and Public Key
- Using java keytool
Java Cryptography Extension (JCE)
- JAVA 8 버전 사용 시에는 오류가 발생할 수 있으며, 제한 없는 암호화 정책 파일로 교체해야 한다.
- JAVA 11 버전 이상은 문제 없음.
Asymmetric Encryption
- Public, Private Key 생성 -> JDK keytool 이용
$ keytool -genkeypair -alias apiEncryptionKey -keyalg RSA \
-dname "CN=Kenneth Lee, OU=API Development, O=joneconsulting.co.kr, L=Seoul, C=KR" \
-keypass "1q2w3e4r" -keystore apiEncryptionKey.jks -storepass "1q2w3e4r"
PS C:\WorkSpace\study\inflearn\springcloud\keystore> keytool -list -keystore .\apiEncryptionKey.jks -v
키 저장소 비밀번호 입력:
키 저장소 유형: PKCS12
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
별칭 이름: apiencryptionkey
생성 날짜: 2022. 4. 1.
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=Kenneth Lee, OU=API Development, O=joneconsulting.co.kr, L=Seoul, C=KR
발행자: CN=Kenneth Lee, OU=API Development, O=joneconsulting.co.kr, L=Seoul, C=KR
일련 번호: 1602a541
적합한 시작 날짜: Fri Apr 01 20:43:25 KST 2022 종료 날짜: Thu Jun 30 20:43:25 KST 2022
인증서 지문:
SHA1: 62:76:38:BF:50:3D:6B:5C:5D:66:4B:8F:9A:D9:BF:62:F1:CB:12:8F
SHA256: F7:EE:B2:C7:D5:3F:C7:6C:1B:35:8E:65:4C:02:BF:04:EB:CC:CB:F6:F4:3E:10:3D:D7:5B:1A:60:F7:E6:AB:9C
서명 알고리즘 이름: SHA256withRSA
주체 공용 키 알고리즘: 2048비트 RSA 키
버전: 3
확장:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 3F 1A 9F 73 4B 97 DD A0 2F 3C A1 24 1F 02 1E BA ?..sK.../<.$....
0010: D5 DB E5 D4 ....
]
]
*******************************************
*******************************************
PS C:\WorkSpace\study\inflearn\springcloud\keystore> keytool -export -alias apiEncryptionKey -keystore apiEncryptionKey.jks -rfc -file trustServer.cer
키 저장소 비밀번호 입력:
인증서가 <trustServer.cer> 파일에 저장되었습니다.
PS C:\WorkSpace\study\inflearn\springcloud\keystore> keytool -import -alias trustServer -file trustServer.cer -keystore publicKey.jks
키 저장소 비밀번호 입력:
새 비밀번호 다시 입력:
소유자: CN=Kenneth Lee, OU=API Development, O=joneconsulting.co.kr, L=Seoul, C=KR
발행자: CN=Kenneth Lee, OU=API Development, O=joneconsulting.co.kr, L=Seoul, C=KR
일련 번호: 1602a541
적합한 시작 날짜: Fri Apr 01 20:43:25 KST 2022 종료 날짜: Thu Jun 30 20:43:25 KST 2022
인증서 지문:
SHA1: 62:76:38:BF:50:3D:6B:5C:5D:66:4B:8F:9A:D9:BF:62:F1:CB:12:8F
SHA256: F7:EE:B2:C7:D5:3F:C7:6C:1B:35:8E:65:4C:02:BF:04:EB:CC:CB:F6:F4:3E:10:3D:D7:5B:1A:60:F7:E6:AB:9C
서명 알고리즘 이름: SHA256withRSA
주체 공용 키 알고리즘: 2048비트 RSA 키
버전: 3
확장:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 3F 1A 9F 73 4B 97 DD A0 2F 3C A1 24 1F 02 1E BA ?..sK.../<.$....
0010: D5 DB E5 D4 ....
]
]
이 인증서를 신뢰합니까? [아니오]: yes
잘못된 응답입니다. 다시 시도하십시오.
이 인증서를 신뢰합니까? [아니오]: 예
인증서가 키 저장소에 추가되었습니다.
PS C:\WorkSpace\study\inflearn\springcloud\keystore> keytool -list -keystore publicKey.jks -v
키 저장소 비밀번호 입력:
키 저장소 유형: PKCS12
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
별칭 이름: trustserver
생성 날짜: 2022. 4. 1.
항목 유형: trustedCertEntry
소유자: CN=Kenneth Lee, OU=API Development, O=joneconsulting.co.kr, L=Seoul, C=KR
발행자: CN=Kenneth Lee, OU=API Development, O=joneconsulting.co.kr, L=Seoul, C=KR
일련 번호: 1602a541
적합한 시작 날짜: Fri Apr 01 20:43:25 KST 2022 종료 날짜: Thu Jun 30 20:43:25 KST 2022
인증서 지문:
SHA1: 62:76:38:BF:50:3D:6B:5C:5D:66:4B:8F:9A:D9:BF:62:F1:CB:12:8F
SHA256: F7:EE:B2:C7:D5:3F:C7:6C:1B:35:8E:65:4C:02:BF:04:EB:CC:CB:F6:F4:3E:10:3D:D7:5B:1A:60:F7:E6:AB:9C
서명 알고리즘 이름: SHA256withRSA
주체 공용 키 알고리즘: 2048비트 RSA 키
버전: 3
확장:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 3F 1A 9F 73 4B 97 DD A0 2F 3C A1 24 1F 02 1E BA ?..sK.../<.$....
0010: D5 DB E5 D4 ....
]
]
*******************************************
*******************************************
PS C:\WorkSpace\study\inflearn\springcloud\keystore> keytool -list -keystore publicKey.jks
키 저장소 비밀번호 입력:
키 저장소 유형: PKCS12
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
trustserver, 2022. 4. 1., trustedCertEntry,
인증서 지문(SHA-256): F7:EE:B2:C7:D5:3F:C7:6C:1B:35:8E:65:4C:02:BF:04:EB:CC:CB:F6:F4:3E:10:3D:D7:5B:1A:60:F7:E6:AB:9C
PS C:\WorkSpace\study\inflearn\springcloud\keystore> keytool -list -keystore .\apiEncryptionKey.jks
키 저장소 비밀번호 입력:
키 저장소 유형: PKCS12
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
apiencryptionkey, 2022. 4. 1., PrivateKeyEntry,
인증서 지문(SHA-256): F7:EE:B2:C7:D5:3F:C7:6C:1B:35:8E:65:4C:02:BF:04:EB:CC:CB:F6:F4:3E:10:3D:D7:5B:1A:60:F7:E6:AB:9C
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2022-04-01 오후 8:43 2627 apiEncryptionKey.jks => privateKey
-a---- 2022-04-01 오후 8:49 1194 publicKey.jks => publicKey
-a---- 2022-04-01 오후 8:47 1282 trustServer.cer => 인증서