신입사원 일기

[TIL] 랜덤 시크릿 키 생성 (openssl rand)

zincah 2024. 9. 2. 22:08
반응형
미니프로젝트를 진행하다가 JWT Secret Key를 사용해야하는 경우가 생겼습니다.
간단하게 JWT Secret Key 에 대해서 제가 알아본 바를 정리하고 Secret Key를 생성할 수 있는 openssl 명령어를 소개하도록 하겠습니다.

 

JWT Secret Key

 

JWT (JSON Web Token) 에서 Secret Key를 사용하는 이유는 보안성을 확보하기 위해서입니다. JWT는 서버와 클라이언트 간에 정보를 안전하게 전달하기 위한 토큰 기반 인증 메커니즘으로, Secret Key는 JWT의 서명을 생성하고 검증하는 데 사용됩니다.

 

Random Key

 

JWT Secret Key 로 사용하기 위해 랜덤 키를 프로젝트에 세팅해줘야 하는데 안전한 비밀키를 생성하고 관리하기 위해서는 충분한 길이와 복잡성을 갖춘 키를 암호화 안전한 방법으로 생성하며, 이를 안전하게 저장하고 관리하는 것이 중요합니다. 

 

  • 충분한 길이 : 최소 256바이트(32바이트) 이상의 길이를 권장
  • 복잡성 : 랜덤 값 활용
  • 암호화 안전한 방법 사용 : SHA-256, HMAC-SHA256, PBKDF2, bcrypt, scrypt 등의 암호화 안전한 난수 생성 알고리즘을 사용하거나 프로그래밍 언어에 따라 사용할 수 있는 소스 사용

 

openssl 활용

 

openssl은 다양한 암호화 작업을 지원하며, 그 중 하나가 보안 랜덤 키 생성입니다.

 

  1.  256바이트(32바이트) 랜덤 키 생성
openssl rand -base64 32

 

이 명령어는 256비트(32바이트)의 랜덤 값을 생성하고, 이를 Base64로 인코딩하여 출력합니다. Base64 인코딩은 키를 저장하거나 전송할 때 유용합니다.

 

2. Hex 형식의 256비트(32바이트) 랜덤 키 생성

openssl rand -hex 32

 

이 명령어는 256비트 길이의 키를 16진수로 생성하여 출력합니다.

길이를 조정하고 싶다면, -base64 또는 -hex 옵션 뒤에 원하는 바이트 수를 지정하면 됩니다.

 

 

위 명령어들을 통해 랜덤 키를 활용해야하는 프로젝트의 경우 유용하게 사용할 수 있을 것 같습니다ㅎㅎ

* 맥 개발환경으로 openssl rand 명령어 기본 제공

반응형