피드로 돌아가기
JWKS explained: what every developer should know
Dev.toDev.to
Security

PEM 기반 인증서 관리의 복잡성을 해결한 JSON 기반 JWKS 표준 설계 분석

JWKS explained: what every developer should know

Jérôme LELEU2026년 6월 16일5intermediate

Context

과거 SAML 및 XML 기반 환경에서 사용하던 PEM/DER 포맷 인증서의 복잡한 조작 방식과 낮은 가독성으로 인한 관리 효율 저하 발생. 공개키 인프라의 수동 관리 방식이 현대적인 분산 시스템의 빠른 Key Rotation 요구사항을 충족하지 못하는 한계 직면.

Technical Solution

  • 인증서 형식을 JSON 구조로 표준화하여 가독성과 기계적 처리 효율을 높인 JWK 포맷 도입
  • kid(Key ID) 속성을 통한 다중 키 식별 구조 설계로 원활한 Key Rotation 및 버전 관리 구현
  • kty(Key Type)와 use(Public Key Use) 필드를 정의하여 RSA/EC 등 알고리즘과 서명/암호화 용도를 명확히 분리
  • 단일 키(JWK)를 배열 형태로 그룹화한 JWKS(JSON Web Key Set) 구조를 통해 다수의 공개키를 한 번에 배포하는 메커니즘 구축
  • d 속성 유무를 통한 Public Key와 Private Key의 엄격한 구조적 구분으로 보안 유출 방지 설계
  • JWT 헤더의 alg 필드에 의존하지 않고 서버 내부 설정 기반으로 검증하는 로직을 통해 Algorithm Confusion Attack 원천 차단

- JWKS 엔드포인트 노출 시 Private Key 속성(`d` 필드 등)이 포함되었는지 반드시 검토 - JWT 검증 시 헤더의 `alg` 값을 맹신하지 말고 서버측으로 정의된 강제 알고리즘 설정 적용 - Key Rotation 전략 수립 시 `kid` 값을 활용한 구/신규 키의 Grace Period 운영 방안 마련 - 공개키 배포 자동화를 위해 JWKS 표준 포맷의 JSON API 설계 적용

원문 읽기