본문으로 바로가기

인증서 디코더 x509 pem 온라인 파싱하기

category 프로그래밍 2026. 7. 26. 21:42
반응형

서버/클라이언트 인증서 확인할 일이 종종 있는데 그때마다 openssl로 -text -noout 붙여서 터미널에 뽑아보는 게 귀찮았음. 유효기간이랑 SAN 정도만 빠르게 보고 싶은 건데 매번 명령어 치는 게 번거로워서, 붙여넣기만 하면 바로 파싱해주는 도구를 하나 만들어봄.

 

바로 써볼 수 있게 위젯부터 올려둠. PEM 인증서를 붙여넣으면 브라우저 안에서 바로 파싱됨 (서버로 전송 안 됨).

 

Certificate Reader

X.509 인증서 파서

PEM 형식 인증서를 붙여넣으면 자동으로 항목을 나눠 보여줌.

PEM 붙여넣기
 
인증서를 붙여넣으면 이 아래에 결과가 표시됨.
모든 파싱은 브라우저 안에서만 이루어지며, 입력한 인증서는 서버로 전송되지 않음.

 

1. X.509 인증서란

공개키 인증서의 표준 포맷임. 웹사이트 자물쇠 아이콘 눌렀을 때 나오는 그 인증서가 X.509 형식이고, PEM(-----BEGIN CERTIFICATE-----로 시작하는 텍스트)은 이 인증서를 base64로 인코딩해서 텍스트로 담아둔 것. 안에는 주체, 발급자, 유효기간, 공개키 같은 정보가 ASN.1 규칙으로 인코딩되어 들어있음.

 

 

2. 사용한 라이브러리 jsrsasign

직접 ASN.1 파서 짜는 건 시간이 너무 오래 걸릴 것 같아서 jsrsasign이라는 오픈소스 라이브러리 갖다 씀. 순수 자바스크립트로 되어있고 X.509 파싱뿐만 아니라 RSA/ECDSA 서명, JWT 검증까지 되는 꽤 오래되고 검증된 라이브러리임. CDN으로 스크립트 한 줄만 불러오면 돼서 빌드 과정 없이 html 파일 하나로 끝남.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jsrsasign/11.1.3/jsrsasign-all-min.js"></script>

 

3. 뽑아주는 정보

붙여넣으면 아래 항목들을 카드로 정리해줌.

항목 설명
Subject / Issuer 인증서 주체와 발급자
일련번호 인증서 고유 시리얼 넘버
서명 알고리즘 SHA256withRSA 같은 서명 방식
유효기간 notBefore ~ notAfter, 남은 일수(D-day)까지 표시
공개키 정보 RSA 비트수 또는 EC 커브명
SHA-256 / SHA-1 지문 인증서 fingerprint
SAN 대체 도메인/IP 목록
Key Usage, Basic Constraints 인증서 용도 관련 확장 필드

 

여러 개를 이어서 붙이면(체인 인증서) 자동 인식해서 리프 인증서부터 상위 인증서까지 순서대로 나눠서 보여줌. 체인 검증하다가 중간 인증서 빠뜨린 건 아닌지 볼 때 나름 쓸모 있을 듯.

 

4. 유효기간 표시

만료일까지 남은 날짜 계산해서 상태를 4단계로 나눔.

  • 정상: D-30 넘게 남음
  • 만료 임박: D-30 이내
  • 만료됨: D+로 표시, notAfter 지남
  • 발급 예정: notBefore 이전

인증서 여러 개 관리하다 보면 갱신 시기 놓치는 경우가 종종 있어서 색으로 한눈에 구분되게 해둠.

 

5. 티스토리에 넣기

만든 거 로컬에 두기 아까워서 티스토리 글에 바로 넣어봄. 글쓰기 화면에서 기본 에디터 대신 HTML 모드로 전환한 다음 <div>, <style>, <script> 태그 통째로 붙여넣으면 됨. 파싱은 전부 브라우저에서 처리되고 입력한 인증서 내용이 어디로 전송되지도 않아서 데모용으로 넣어놓기 부담 없었음.

 

파싱 자체는 라이브러리가 다 해주는 거라 코드는 짧게 끝났는데, 오히려 상태 나누고 카드 레이아웃 잡는 게 더 오래 걸림. 인증서 만료로 장애 겪어본 사람이면 하나쯤 만들어두면 나쁘지 않을 듯.

반응형