투케이2K

121. (Library/Framework) [라이브러리] [Web] 자바스크립트 node-forge 웹 브라우저 X.509 인증서 정보 확인 라이브러리 본문

Library & F.W

121. (Library/Framework) [라이브러리] [Web] 자바스크립트 node-forge 웹 브라우저 X.509 인증서 정보 확인 라이브러리

투케이2K 2026. 6. 6. 10:48
728x90
반응형

[타이틀]

구 분 : Library / 라이브러리

제 목 : [라이브러리] [Web] 자바스크립트 node-forge 웹 브라우저 X.509 인증서 정보 확인 라이브러리

 

[설 명]

-----------------------------------------------------------------------------------------
[라이브러리 정보 및 환경]
-----------------------------------------------------------------------------------------

- 구 분 : Library / Framework


- 제 목 : [라이브러리] [Web] 자바스크립트 node-forge 웹 브라우저 X.509 인증서 정보 확인 라이브러리


- 환 경 : Web / JavaScript / Chrome / node-forge / X.509


- 사전) 👉 X.509 간단 설명 : 

  >> X.509 는 공개키 기반 구조 (PKI, Public Key Infrastructure) 에서 사용되는 디지털 인증서의 표준 규격입니다.

  >> X.509 는 인터넷에서 사용하는 SSL/TLS 인증서, AWS IoT 인증서, 전자서명 인증서 등이 어떤 형식으로 구성되어야 하는지 정의한 국제 표준입니다.

  >> X.509 인증서는 다음 정보를 담고 있습니다.

    - "이 공개키는 누구의 것인가?"
    - "누가 이 공개키를 보증하는가?"
    - "언제까지 유효한가?"

  >> X.509 인증서 구조 : Base64로 인코딩된 ASN.1 데이터가 들어있습니다.

    -----BEGIN CERTIFICATE-----
    MIIDYzCCAkugAwIBAgI...
    ...
    ...
    -----END CERTIFICATE-----


- 사전) 👉 자바스크립트에서 node-forge 의존성 설정 코드 : 

    <!-- node-forge 라이브러리 -->
    <script src="https://cdn.jsdelivr.net/npm/node-forge@1.3.1/dist/forge.min.js"></script>

-----------------------------------------------------------------------------------------






-----------------------------------------------------------------------------------------
[설 명]
-----------------------------------------------------------------------------------------

1. node-forge 는 JavaScript 로 구현된 오픈소스 암호화 (Cryptography) 라이브러리입니다.


2. node-forge 는 브라우저와 Node.js 환경 모두에서 사용할 수 있으며, 별도의 네이티브 라이브러리(OpenSSL 등) 설치 없이 다양한 암호화 기능을 제공합니다.


3. node-forge 주요 특징 : 

  >> 👉 순수 JavaScript 구현 : 다른 암호화 라이브러리와 달리 C/C++ 기반 모듈 없이 동작합니다.

    forge.md.sha256.create()
    forge.pki.certificateFromPem()
    forge.pki.rsa.generateKeyPair()

  >> 👉 X.509 인증서 처리 : Certificate 검증에 활용하는 기능입니다.

    const cert = forge.pki.certificateFromPem(certPem);
    console.log(cert.serialNumber);
    console.log(cert.validity.notBefore);
    console.log(cert.validity.notAfter); 

    PEM 파싱
    DER 변환
    Subject 조회
    Issuer 조회
    Extension 조회
    Fingerprint 생성

  >> 👉 RSA 공개키 암호화 : RSA 키 생성 , RSA 암호화 , RSA 복호화

  >> 👉 AES 대칭키 암호화 : AES-128 , AES-192 , AES-256

    const cipher =
        forge.cipher.createCipher(
            "AES-CBC",
            key
        );

  >> 👉 해시 (Hash) : MD5 , SHA1 , SHA256 , SHA384 , SHA512

    const md = forge.md.sha256.create();
    md.update("hello");
    console.log(
        md.digest().toHex()
    );

  >> 👉 디지털 서명 : 서명 생성 , 서명 검증

    publicKey.verify(
        md.digest().bytes(),
        signature
    );

  >> 👉 CSR (Certificate Signing Request) : 인증서 요청서 생성 가능

    const csr = forge.pki.createCertificationRequest();


4. node-forge 장점 : 

    ✅ 브라우저에서 사용 가능

    ✅ OpenSSL 없이 동작

    ✅ X.509 인증서 지원

    ✅ RSA 지원

    ✅ AES 지원

    ✅ SHA 지원

    ✅ AWS IoT 인증서 분석에 적합

    ✅ CDN으로 즉시 사용 가능


5. node-forge 단점 : 

    ❌ Web Crypto API보다 느림

    ❌ 대용량 암호화에는 부적합

    ❌ 최신 브라우저의 네이티브 암호화 API보다 성능이 낮음

    ❌ ECDSA/ECC 지원이 제한적

-----------------------------------------------------------------------------------------






-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------

▶️ [Git 공식 사이트]

https://github.com/digitalbazaar/forge?utm_source=chatgpt.com


▶️ [자바스크립트 node-forge 라이브러리 사용해 X.509 인증서 식별 정보 확인 - getSha256Fingerprint]

https://kkh0977.tistory.com/8893

https://blog.naver.com/kkh0977/224307596780


▶️ [자바스크립트 node-forge 라이브러리 사용해 X.509 인증서 만료 기간 유효성 검증 수행]

https://kkh0977.tistory.com/8892

https://blog.naver.com/kkh0977/224307272979


▶️ [자바스크립트 AWS Iot registerCertificateWithoutCA 사용해 클레임 인증서 등록 요청 수행 - 공통 클레임 인증서 사용]

https://kkh0977.tistory.com/8886

https://blog.naver.com/kkh0977/224306059609


▶️ [Aws Iot Core] Aws 프로비저닝 수행에 필요한 클레임 인증서 (claim certificate) 설명 정리

https://kkh0977.tistory.com/7799

https://blog.naver.com/kkh0977/223784109192?trackingCode=blog_bloghome_searchlist

-----------------------------------------------------------------------------------------
 
728x90
반응형
Comments