일반 JavaScript로 PDF에 서명
도전 과제:
WebCrypto API를 사용하여 PDF 문서에 디지털 서명하는 것은 어려운 일입니다. 현재 API는 키 저장소 또는 로컬 암호화에 대한 직접 액세스를 허용하지 않습니다.
해결책:
이 제한을 피하려면 다음을 수행하는 것이 좋습니다.
-
PDF 해시 생성: 전체 문서를 PDF 파일로 보내는 대신 PDF 파일의 해시를 생성합니다. browser.
-
브라우저 확장 활용: Signer.Digital과 같은 브라우저 확장을 설치하여 로컬 키 저장소(예: Windows 인증서 저장소 또는 Linux의 PKCS#11)에 액세스하세요. ).
-
해시 서명: 확장 프로그램의 API 사용 로컬 키 저장소에서 얻은 개인 키를 사용하여 해시된 PDF에 서명합니다.
-
서명 수신: 브라우저 확장 프로그램은 적합한 형식(예: PKCS7)으로 서명을 반환합니다.
-
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!