
“공개키, 어디에 뒀더라?”
JWT 서명 검증에 RSA와 같은 공개키 방식을 사용할 때 반드시 마주하게 되는 고민이 있습니다. “공개키를 어떻게 배포하는 게 가장 안전할까?”, “키를 교체할 때마다 모든 서버의 설정을 다시 해야 하나?”
이런 고민을 스마트하게 해결해 주는 것이 바로 **JWKS (JSON Web Key Set)**라는 매력적인 시스템입니다.
JWKS: 공개키의 ‘쇼케이스’
JWKS(제이 더블유 케이 에스)는 이름 그대로 ‘JSON 형식으로 쓰인 키들의 집합’입니다.
인증 서버(Auth0, Cognito 등)가 특정 URL에 이 JSON 데이터을 공개해 두면, 토큰을 검증해야 하는 API 서버들이 그 주소로 가서 키를 읽어오는 방식입니다.
비유하자면, **“최신 공개키들을 이 쇼케이스에 전시해 두었으니, 필요할 때 언제든 가져가세요”**라고 안내하는 것과 같습니다.
JWKS가 좋은 이유
- 자동 로테이션: 키를 새로 바꿨을 때 쇼케이스 내부만 교체해 주면 됩니다. API 서버들은 설정 변경 없이 URL을 조회하는 것만으로 최신 키를 얻을 수 있습니다.
- 여러 개의 키 관리: ‘이전 키’와 ‘새로운 키’를 한 바구니에 동시에 담아둘 수 있어, 키 교체 기간(마이그레이션) 중에도 서비스가 중단되지 않습니다.
- 세계 표준: OAuth 2.0이나 OIDC에서 널리 사용되는 방식이기에, 대부분의 인증 라이브러리들이 기본적으로 지원합니다.
JWKS 속 들여다보기: 그저 평범한 JSON입니다
용어는 낯설지만 구조는 매우 단순합니다. keys라는 배열 안에 개별 키들의 정보가 담겨 있는 형태입니다.
{
"keys": [
{
"kty": "RSA", // 키 종류 (RSA 등)
"use": "sig", // 용도 (서명용!)
"kid": "my-key-2024", // 키 식별자 (키의 이름)
"n": "...", // 공개키 데이터 1
"e": "AQAB" // 공개키 데이터 2
}
]
}
DevToolKits로 JWKS ‘직접 만들기’ 체험하기
저희 사이트의 **JWKS 생성 도구**를 활용하면 개발 및 테스트에 필요한 키 쌍을 브라우저 상에서 즉시 만들 수 있습니다.
‘공개키 (JWKS 형식)‘와 ‘비밀키 (PEM 형식)‘를 모두 얻을 수 있어 로컬 환경의 인증 기능 테스트에 매우 유용합니다. 모든 과정은 브라우저 내에서 완결되므로 비밀키가 서버로 전송되거나 인터넷으로 유출될 걱정 없이 안심하고 사용하실 수 있습니다.
마치며
JWKS는 복잡한 키 관리를 심플하고 안전하게 만들어주는 아주 훌륭한 발명품입니다.
이 메커니즘을 이해하고 활용한다면 여러분의 인증 시스템은 한층 더 세련되게 변할 것입니다. ‘공개키 배포’ 문제로 머리가 아프다면 이 쇼케이스 시스템을 꼭 기억해 주세요.