자바 스크립트 (forge)에서 pfx 인증서의 미리보기를 가져 오는 함수를 작성해야합니다. 테스트 인증서 (mypfx.pfx)를 만들었습니다. C# X509Certificate2 라이브러리를 사용하여 X509Certificate2 객체에서 파일 바이트 배열과 암호를 전달하여 입력 인증서의 지문을 볼 수 있습니다. 여기에 C# 코드 조각입니다 :Javascript에서 X509Certificate 지문을 얻는 방법?
X509Certificate2 certificate = new X509Certificate2(byteArrayCertData, password);
var thumbprint = certificate.Thumbprint;
//thumbprint is a hex encoding SHA-1 hash
하지만 자바 스크립트 같은 일을하려고 할 때 (위조 사용). 정확한 지문을 얻을 수 없습니다. 여기 내 자바 스크립트 코드는 다음과 같습니다.
var certi = fs.readFileSync('c:/mypfx.pfx');
let p12b64 = Buffer(certi).toString('base64');
let p12Der = forge.util.decode64(p12b64);
var outAsn1 = forge.asn1.fromDer(p12Der);
var pkcs12 = forge.pkcs12.pkcs12FromAsn1(outAsn1, false, "1234");
var fp = null;
for (var sci = 0; sci < pkcs12.safeContents.length; ++sci) {
var safeContents = pkcs12.safeContents[sci];
for (var sbi = 0; sbi < safeContents.safeBags.length; ++sbi) {
var safeBag = safeContents.safeBags[sbi];
if (safeBag.cert != undefined && safeBag.cert.publicKey != undefined) {
fp = forge.pki.getPublicKeyFingerprint(safeBag.cert.publicKey, {type: 'RSAPublicKey'});
//Is this fingerprint value I am looking for??
break;
}
}
}
결과가 C# 엄지 손가락과 다른 것으로 보이는 것은 잘못되었습니다. 나는 pkcs12.js 파일에서 다른 기능을 시도했다. 그들 중 누구도 작동하지 않습니다. 정확한 지문 결과가 나오면 다른 JS 라이브러리를 사용해도됩니다. 제발 실수를 도와주세요. 감사!
을 사용할 수 있습니다 DER (바이너리)로 단조 인증서를 변환하려면 자신에게
을 계산할 수 있습니다 보인다 . – Void