> 웹 프론트엔드 > JS 튜토리얼 > JavaScript와 WebCrypto API만으로 PDF에 서명할 수 있습니까?

JavaScript와 WebCrypto API만으로 PDF에 서명할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-01 03:31:09
원래의
537명이 탐색했습니다.

Can JavaScript and WebCrypto API Alone Sign a PDF?

JavaScript 및 WebCrypto API를 사용하여 PDF 서명

WebCrypto API의 발전과 Chrome 및 Firefox와 같은 주요 브라우저에서의 지원으로 인해 가능성이 높아졌습니다. 디지털 PDF 서명에 활용하는 것입니다. 그러나 문서와 세부적인 예가 부족하여 문제가 발생합니다. 서명 프로세스를 설명하는 예가 있지만 원하는 결과(서명된 Base64 PDF 문자열)는 아직 파악하기 어렵습니다.

JavaScript와 WebCrypto API만 사용하여 PDF에 서명할 수 있습니까?

현재 WebCrypto API에는 키 저장소나 외부 암호화 장치에 대한 액세스가 부족합니다. PDF가 서버 경계 내에서 보호되어야 하는 일반적인 PDF 서명 요구 사항을 수용하기 위해 전체 문서를 브라우저로 보내거나 API 서버에 서명하는 것은 권장되지 않습니다.

최적의 접근 방식

효과적인 솔루션에는 서명을 위한 PDF 해시를 생성하고, 해당 해시를 브라우저로 보내고, 브라우저 확장을 통해 JavaScript를 활용하여 로컬 키 저장소(또는 USB/스마트 카드)에 액세스하여 생성하는 것이 포함됩니다. 서명. 결과 서명(예: PKCS7 또는 CMS 컨테이너)은 서버로 다시 전송되어 해시가 생성된 원본 PDF에 삽입될 수 있습니다.

브라우저용 Signer.Digital Extension 확장

브라우저 기반 서명 시나리오를 용이하게 하기 위해 Signer.Digital이라는 브라우저 확장과 함께 제공되는 .NET 라이브러리를 사용할 수 있습니다. 확장 프로그램은 주요 브라우저(Chrome 및 Firefox)와 원활하게 작동하며 Signer.Digital Browser Host를 활용하여 Windows 인증서 저장소 및 기본 CSP와 상호 작용하여 해시에 서명합니다.

JavaScript 코드 샘플

확장 기능에서 서명 기능을 호출하려면 JavaScript 코드를 다음과 같이 사용할 수 있습니다. 다음:

// Calculate Sign for the Hash by Calling function from Extension SignerDigital
SignerDigital.signPdfHash(hash, $("#CertThumbPrint").val(), "SHA-256")  // or "SHA256"
  // SignerDigitial.signHashCAdESBr method may be used for producing ICP-Brazil Signature

  .then(
    function (signDataResp) {
      // Send signDataResp to Server
    },
    function (errmsg) {
      // Send errmsg to server or display the result in browser.
    }
  );
로그인 후 복사

다이어그램: 브라우저에서 디지털 서명

[브라우저에서 디지털 서명 이미지]

  1. 서버가 다음의 해시를 보냅니다. 문서를 브라우저에 보냅니다.
  2. 브라우저는 Signer.Digital 브라우저 확장 JavaScript API를 사용하여 확장 호스트에서 작업을 수행합니다.
  3. 브라우저 확장 호스트는 인증서 저장소 또는 암호화 장치와 상호 작용하여 서명된 해시를 얻습니다.
  4. 확장 호스트가 서명을 브라우저에 반환합니다.
  5. 브라우저가 서명을 서버로 다시 보내면 이를 PDF에 통합할 수 있습니다.

위 내용은 JavaScript와 WebCrypto API만으로 PDF에 서명할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿