0

JWK ⇄ PEM 키 변환기

실제 Web Crypto API를 사용하여 암호화 키를 JWK와 PEM 형식 사이에서 변환하고, 알고리즘/커브/크기를 디코딩하며, RFC 7638 JWK 지문을 계산합니다.

🔒 전적으로 귀하의 브라우저에서 처리됩니다. 여기에 입력하는 어떤 것도 업로드되지 않습니다.

처리 중... 0%
키 분석 중
형식 변환 중
지문 계산 중
완료

결과

JSON Web Keys (JWK)와 PEM으로 인코딩된 키는 JWT 라이브러리, TLS 도구, OAuth/OIDC 설정에서 번갈아 나타나지만, 직접 변환하려면 DER 구조를 base64 디코딩하거나 JSON을 재구성해야 하므로 미묘한 오류가 발생하기 쉽습니다. 이 도구는 텍스트 조작 대신 브라우저의 실제 Web Crypto API를 사용하여 변환을 수행합니다. 붙여넣은 PEM 블록은 crypto.subtle.importKey('spki'|'pkcs8', ...)로 가져와서 exportKey('jwk', ...)로 JWK로 다시 내보내고, 붙여넣은 JWK는 importKey('jwk', ...)로 가져와서 SPKI 또는 PKCS8 DER로 다시 내보낸 다음 올바른 PEM 헤더로 감쌉니다. 브라우저가 직접 키 데이터를 검증하고 디코딩하기 때문에, 잘못된 키나 일치하지 않는 알고리즘 선택이 조용히 쓰레기 값을 생성하지 않고 확실히 실패합니다.

지원되는 알고리즘은 RSA (RSASSA-PKCS1-v1_5), P-256/P-384/P-521 커브의 EC, 그리고 브라우저가 구현하는 경우 Ed25519 및 X25519입니다. 엔진별로 Web Crypto에서 Ed25519/X25519 지원이 아직 일관되지 않으므로, 사용자 에이전트 문자열로 추측하는 대신 선택된 커브에 대해 실제 crypto.subtle.generateKey() 탐침을 실행하여 여기서 지원되지 않으면 조작된 결과를 반환하지 않고 명확하게 알려줍니다.

모든 변환에서 RSA 키의 경우 CryptoKey 객체에서 직접 가져온 모듈러스 비트 길이와 해시 알고리즘, EC 및 OKP 키의 경우 명명된 커브, 그리고 모든 키에 대해 정규화된 멤버 순서(RSA는 e/kty/n, EC는 crv/kty/x/y, OKP/Ed25519/X25519는 crv/kty/x)로 직렬화된 JWK 필수 멤버의 SHA-256 해시인 RFC 7638 JWK 지문 등 키의 실제 메타데이터도 디코딩합니다. 이 지문은 많은 시스템에서 키의 "kid" 식별자로 사용되며, 멤버 순서가 틀리면 완전히 다른 해시가 생성되는데, 이는 바로 직접 구현할 때 흔히 저지르는 실수입니다.

모든 작업이 여러분의 브라우저 탭 내에서 crypto.subtle을 통해 실행되므로, 비공개 키 데이터는 절대 기기를 떠나지 않습니다. 변환 과정 어디에도 서버, 업로드, 외부 API 호출이 관여하지 않습니다.