>웹 프론트엔드 >JS 튜토리얼 >직접 키 액세스 없이 JavaScript를 사용하여 PDF에 디지털 서명을 하려면 어떻게 해야 합니까?

직접 키 액세스 없이 JavaScript를 사용하여 PDF에 디지털 서명을 하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-03 22:50:111033검색

How Can I Digitally Sign a PDF Using JavaScript Without Direct Key Access?

일반 JavaScript로 PDF에 서명

도전 과제:

WebCrypto API를 사용하여 PDF 문서에 디지털 서명하는 것은 어려운 일입니다. 현재 API는 키 저장소 또는 로컬 암호화에 대한 직접 액세스를 허용하지 않습니다.

해결책:

이 제한을 피하려면 다음을 수행하는 것이 좋습니다.

  1. PDF 해시 생성: 전체 문서를 PDF 파일로 보내는 대신 PDF 파일의 해시를 생성합니다. browser.
  2. 브라우저 확장 활용: Signer.Digital과 같은 브라우저 확장을 설치하여 로컬 키 저장소(예: Windows 인증서 저장소 또는 Linux의 PKCS#11)에 액세스하세요. ).
  3. 해시 서명: 확장 프로그램의 API 사용 로컬 키 저장소에서 얻은 개인 키를 사용하여 해시된 PDF에 서명합니다.
  4. 서명 수신: 브라우저 확장 프로그램은 적합한 형식(예: PKCS7)으로 서명을 반환합니다.
  5. PDF에 서명 삽입: 서버측에서는 적절한 라이브러리(또는 다음에서 제공하는 라이브러리)를 사용합니다. Signer.Digital)을 사용하여 원본 PDF 파일에 서명을 다시 삽입합니다.

Signer.Digital 확장:

Signer.Digital 브라우저 확장은 필요한 기능을 제공합니다. 서명 프로세스를 수행하는 기능 다음:

  • 함수: SignerDigital.signPdfHash(hash, certThumbPrint, hashingAlgo)
  • 매개변수:

    • 해시: Base64로 인코딩된 문자열의 PDF 해시
    • certThumbPrint: 서명에 사용할 인증서의 지문
    • hashingAlgo: PDF를 해시하는 데 사용되는 알고리즘(예: "SHA256")

예:

// Assuming hash is a Base64-encoded PDF hash
SignerDigital.signPdfHash(hash, $("#CertThumbPrint").val(), "SHA-256")
.then(
   function (signDataResp) {
      // Send signDataResp (contains Base64 PKCS7 signature) to server
   },
   function (errmsg) {
      // Handle error
   }
);

참고:

  • 개인 키는 인증서 설정에 로컬로 저장됩니다.
  • 미래에는 WebCrypto API의 발전으로 키 저장소에 대한 직접 접근이 가능해 브라우저 확장이 필요 없게 될 수도 있습니다.

위 내용은 직접 키 액세스 없이 JavaScript를 사용하여 PDF에 디지털 서명을 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.