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. } );
다이어그램: 브라우저에서 디지털 서명
[브라우저에서 디지털 서명 이미지]
위 내용은 JavaScript와 WebCrypto API만으로 PDF에 서명할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!