JWK ↔ PEM 변환기 — RSA·EC, 양방향

JWK(JSON Web Key)와 PEM(SPKI / PKCS#8) 사이에서 공개·개인 키를 양방향으로 변환합니다 — RSA와 EC 지원, JWT·OIDC·JWKS 작업에 유용. 100% 브라우저에서 실행되며 업로드되지 않습니다.

🔒 키는 브라우저의 Web Crypto API로 변환되며 업로드되지 않습니다. 개인 키는 비밀로 보관하세요.

이 JWK ↔ PEM 변환기가 하는 일

JWK(JSON Web Key)를 붙여넣어 PEM 블록을 얻거나, 방향을 바꿔 PEM을 붙여넣어 다시 JWK를 얻을 수 있습니다. RSA 키(kty RSA)와 EC 키(P-256·P-384·P-521 곡선의 kty EC)를 모두, 공개 키와 개인 키 모두 처리합니다. 공개 키는 SPKI(-----BEGIN PUBLIC KEY-----), 개인 키는 PKCS#8(-----BEGIN PRIVATE KEY-----)로 출력됩니다. 내부적으로 각 키를 브라우저에 내장된 Web Crypto API로 가져와 다시 내보내므로, PEM 안의 DER은 직접 조립한 것이 아니라 표준을 정확히 따릅니다 — crypto.subtle.exportKey가 만들어내는 바이트와 정확히 일치합니다.

JWK와 PEM을 왜 변환하나

JWKS 엔드포인트, OIDC 디스커버리 문서, 대부분의 JWT 라이브러리는 키를 JWK로 제공하는 반면, OpenSSL·TLS 설정·SSH 도구·많은 서버 라이브러리는 PEM을 요구합니다 — 그래서 키를 한 형식에서 다른 형식으로 계속 옮겨야 합니다. 이 변환기는 명령줄을 거치지 않고 둘 사이를 이어 줍니다. 모든 처리는 브라우저에서 이뤄지며, 붙여넣은 내용은 업로드·기록·저장되지 않습니다 — 개인 키는 반드시 비밀로 지켜야 하므로 중요한 점입니다. 범위 참고: SPKI 공개 키와 PKCS#8 개인 키(최신 -----BEGIN PUBLIC/PRIVATE KEY----- 라벨)를 다루며, 구형 PKCS#1(-----BEGIN RSA ...-----)이나 SEC1(-----BEGIN EC PRIVATE KEY-----) 형식은 지원하지 않고, Ed25519 같은 OKP가 아닌 RSA·EC를 지원합니다.

자주 묻는 질문

어떤 키 종류와 PEM 형식을 지원하나요?

RSA와 EC 키(P-256·P-384·P-521 곡선)를 지원합니다. 공개 키는 SPKI(-----BEGIN PUBLIC KEY-----), 개인 키는 PKCS#8(-----BEGIN PRIVATE KEY-----)로 상호 변환됩니다. 구형 PKCS#1(-----BEGIN RSA PUBLIC/PRIVATE KEY-----)과 SEC1(-----BEGIN EC PRIVATE KEY-----) 블록, 그리고 Ed25519 같은 OKP 키는 지원 범위가 아닙니다.

개인 키가 어딘가로 업로드되나요?

아니요. 변환은 브라우저의 Web Crypto API로 전부 로컬에서 이뤄집니다. 키는 어떤 서버로도 전송·기록·저장되지 않고 브라우저 탭 안에서만 존재합니다. 그래도 붙여넣는 개인 키는 신중히 다루세요.

공개 키인지 개인 키인지 어떻게 판단하나요?

JWK를 PEM으로 변환할 때는, 개인 성분 d가 들어 있는 JWK를 개인 키로 보고 PKCS#8로, 없으면 공개 키로 보고 SPKI로 씁니다. PEM을 JWK로 변환할 때는 -----BEGIN ...----- 라벨로 판단합니다: PUBLIC KEY는 SPKI, PRIVATE KEY는 PKCS#8로 읽습니다.