반응형
1. OpenSSL 설치하기
- Windows:
https://slproweb.com/products/Win32OpenSSL.html 혹은 https://code.google.com/archive/p/openssl-for-windows/downloads 등에서 OpenSSL을 다운로드하여 설치하면 됩니다. - Mac:
brew install openssl
2. openssl.exe 파일 위치로 이동하기
openssl-0.9.8k_X64\bin\openssl.exe 위치로 이동해줍니다.
3. private_key 생성
1) private_key.pem 생성
openssl-0.9.8k_X64\bin> openssl genrsa -out private_key.pem 1024
생성된 private_key.pem (PKCS#1)
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDejuGl7TlAvSFZp/9yLhxvm0JdWw2Q4QpLtwhNzMTzbu9b5+3Y
Ps0BD7PyrZi6VljUPVDsCkCOIYczqMFXg/Qfkb5iua4E3cPwrmFEyR+3v1GaHbuV
4dbn6Vpafloe+OylKo7ucVXYc3Sga9vcihYCJAx5r/DMnnhf/YRrfgtyQQIDAQAB
AoGAeuiLg1gEE1WfsmTN9N+0QoqK1wWu80Dkr7XQNy8L4ah1NdtbBd6A1sI2TaJD
QzzmZ6fJJeHvjs7DXOsog01TJogJ1SwJANAOSMvCignsR+F8s/p/e/3Ypsm85eIk
V/bfUCE4Ov9KrLFCnAPjFN3PZMRrnaNj7nDe1Z188zQRAjECQQD8QbxFRjQXqRrd
i3VeiDp0UAFwjPemMo6bTotiORKGdw8G2CXhH/rypmwRGcG6iepK0V0QAyO59TsJ
38dbiJsNAkEA4dxT6VhpQ6yr23a9qp2zeavH+TczlMCoiTcxC4UHBTuvcZDpfD6/
0ULKO1+wqgPaMy9esgKutUv6Iqs1DqtXBQJBALxVz9zgt0/a/6Xc0zpK92mTuh9w
AA3jvTkTAVnKRpyCE4QGqPFV0SSNQC3cTxmYkoZdnd+wmGHkR7nti4g5i5kCQFR3
LlZcvvkVESxA6stssJr2+BEmaL7fkefG4SuaszZszL7e38KcQOYEYVb1AT+Ds01j
ELnnsOiSIlhmyK/UufUCQQCanYAzbZ5UIuheqOPb8d1yqTxRZn710EMPUKP6lShS
a1o+xsKC01uWwlO9AlTqOmskWGxbIE4lGk3sZF7UwAQl
-----END RSA PRIVATE KEY-----
기본적으로 private_key를 생성하면 PKCS#1 방식으로 암호화가 됩니다. 하지만 Java에서는 PKCS#1 방식을 지원하지 않기 때문에 Java에서 사용할 경우, private_key.pem 파일을 모든 비대칭 알고리즘에 적용되는 PKCS#8 형식으로 바꿔줘야 합니다.
PKCS#1과 PKCS#8에 대한 자세한 설명은 포스팅하지 않겠습니다. 생성된 private_key.pem 파일을 확인해 보면 바로 보이는 차이점은 헤더와 푸터의 차이입니다.
2). private_key_pkcs8.pem 생성
openssl-0.9.8k_X64\bin> openssl pkcs8 -in private_key.pem -inform PEM -out private_key_pkcs8.pem -outform PEM -topk8 -nocrypt
생성된 private_key_pkcs8.pem
-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAN6O4aXtOUC9IVmn
/3IuHG+bQl1bDZDhCku3CE3MxPNu71vn7dg+zQEPs/KtmLpWWNQ9UOwKQI4hhzOo
wVeD9B+RvmK5rgTdw/CuYUTJH7e/UZodu5Xh1ufpWlp+Wh747KUqju5xVdhzdKBr
29yKFgIkDHmv8MyeeF/9hGt+C3JBAgMBAAECgYB66IuDWAQTVZ+yZM3037RCiorX
Ba7zQOSvtdA3LwvhqHU121sF3oDWwjZNokNDPOZnp8kl4e+OzsNc6yiDTVMmiAnV
LAkA0A5Iy8KKCexH4Xyz+n97/dimybzl4iRX9t9QITg6/0qssUKcA+MU3c9kxGud
o2PucN7VnXzzNBECMQJBAPxBvEVGNBepGt2LdV6IOnRQAXCM96YyjptOi2I5EoZ3
DwbYJeEf+vKmbBEZwbqJ6krRXRADI7n1Ownfx1uImw0CQQDh3FPpWGlDrKvbdr2q
nbN5q8f5NzOUwKiJNzELhQcFO69xkOl8Pr/RQso7X7CqA9ozL16yAq61S/oiqzUO
q1cFAkEAvFXP3OC3T9r/pdzTOkr3aZO6H3AADeO9ORMBWcpGnIIThAao8VXRJI1A
LdxPGZiShl2d37CYYeRHue2LiDmLmQJAVHcuVly++RURLEDqy2ywmvb4ESZovt+R
58bhK5qzNmzMvt7fwpxA5gRhVvUBP4OzTWMQueew6JIiWGbIr9S59QJBAJqdgDNt
nlQi6F6o49vx3XKpPFFmfvXQQw9Qo/qVKFJrWj7GwoLTW5bCU70CVOo6ayRYbFsg
TiUaTexkXtTABCU=
-----END PRIVATE KEY-----
4. public_key 생성
openssl-0.9.8k_X64\bin> openssl rsa -in private_key_pkcs8.pem -out public_key.pem -pubout
전 Java 환경에서 Private Key를 사용할 것이라 private_key_pkcs8.pem을 통해 public_key.pem을 생성해 주었습니다.
생성된 public_key.pem
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDejuGl7TlAvSFZp/9yLhxvm0Jd
Ww2Q4QpLtwhNzMTzbu9b5+3YPs0BD7PyrZi6VljUPVDsCkCOIYczqMFXg/Qfkb5i
ua4E3cPwrmFEyR+3v1GaHbuV4dbn6Vpafloe+OylKo7ucVXYc3Sga9vcihYCJAx5
r/DMnnhf/YRrfgtyQQIDAQAB
-----END PUBLIC KEY-----
Vue.js와 SpringBoot에서 RSA 암호화를 적용하는 코드는 다음 포스팅에서 하도록 하겠습니다~
반응형
'Web' 카테고리의 다른 글
RSA를 이용하여 페이로드(ex. 비밀번호) 암호화하기 (Vue.js / Spring Boot) (0) | 2024.03.12 |
---|---|
웹 보안을 위한 XSS, CSRF 방어 (1) | 2023.11.13 |
CORS(Cross-Origin Resource Sharing) 이해와 해결 방법 (0) | 2023.09.18 |
웹 데이터 저장: 로컬 스토리지, 세션 스토리지, 쿠키 (0) | 2023.09.18 |
Jar와 War의 차이(spring initializr packaging) (0) | 2023.09.01 |