SPKI 공개키 핀 계산기
인증서 또는 공개키 PEM에서 SPKI pin-sha256 값을 계산합니다. RFC 7469 방식대로 SubjectPublicKeyInfo만 SHA-256으로 해시해 base64로 보여줍니다.
공개키(PUBLIC KEY) 또는 인증서(CERTIFICATE) PEM을 붙여넣으세요. 개인키는 넣지 마세요.
사용 방법
- 1공개키(PUBLIC KEY) 또는 인증서(CERTIFICATE) PEM을 붙여넣습니다.
- 2SubjectPublicKeyInfo만 SHA-256으로 해시한 핀 값을 확인합니다.
- 3HPKP·앱 인증서 피닝 설정에 pin-sha256="..." 형식 그대로 복사해 씁니다.
자주 묻는 질문
인증서 안의 공개키 구조체(SubjectPublicKeyInfo, SPKI)를 DER로 인코딩한 뒤 SHA-256으로 해시하고 base64로 적은 값입니다. RFC 7469(HTTP Public Key Pinning)가 정의한 방식이며, 모바일 앱의 인증서 피닝(certificate pinning) 구현에서도 같은 방식을 씁니다.
인증서는 유효기간이 끝나면 재발급받아야 하는데, 이때 발급자·일련번호·유효기간 같은 필드는 바뀌어도 같은 개인키를 계속 쓰면 공개키(SPKI)는 그대로입니다. 인증서 전체를 해시하면 재발급마다 핀이 바뀌어 버려 키 고정의 의미가 없어지므로, 키 자체만 골라 해시합니다.
둘 다 됩니다. 인증서(CERTIFICATE) PEM을 넣으면 그 안에서 공개키 구조체만 잘라내 계산하고, 공개키(PUBLIC KEY) PEM을 넣으면 그 자체가 이미 공개키 구조체라 바로 계산합니다. 같은 키라면 어느 쪽을 넣어도 같은 핀이 나옵니다. `openssl x509 -pubkey -noout -in cert.pem` 으로 인증서에서 공개키 PEM만 뽑을 수도 있습니다.
dev/x509-cert-decode는 발급자·주체·유효기간·SAN 등 인증서 필드를 구조화해 보여주는 디코더이고, 이 도구는 그 안의 공개키만 골라 SHA-256 핀 값을 계산합니다. 목적이 완전히 다른 별개 기능입니다.
전송되지 않습니다. 계산은 모두 브라우저 안(Web Crypto API)에서 이루어지고 넣은 값은 이 기기에만 남습니다. 개인키는 넣을 필요도 없고 넣어서도 안 됩니다.
알아두면 좋은 점
- PKCS#1 형식("-----BEGIN RSA PUBLIC KEY-----")은 SPKI로 감싸여 있지 않은 다른 DER 구조라 지원하지 않습니다. openssl로 "PUBLIC KEY" 형식으로 변환해야 합니다.
- Node의 crypto 모듈로 실제 RSA·EC 키 쌍과 자기서명 인증서를 만들어 계산한 핀 값과 대조해 검증했습니다. 같은 키의 공개키 PEM과 인증서 PEM 두 경로 모두 같은 핀이 나오는지도 함께 확인했습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 9일 · 결과는 참고용 추정치입니다.