【问题标题】:p12 file import failure in windows certificate store by forge JavaScript library伪造 JavaScript 库在 Windows 证书存储中导入 p12 文件失败
【发布时间】:2017-08-21 08:27:02
【问题描述】:

我正在使用forge 库创建一个.p12 格式的自签名证书,该证书使用WebCryptoAPI 生成私钥-公钥对。但是当我尝试在 Windows 证书存储中导入 .p12 文件时,我收到以下错误:

这个link 说私钥可能有问题。

以下是我通过 webcryptoApi 生成的密钥 sn-p

window.crypto.subtle.generateKey({
    name: 'RSA-PSS',
    modulusLength: 2048,
    publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
    hash: {name: 'SHA-1'}
  }

我的伪造代码sn-p生成p12如下:

var newPkcs12Asn1 = forge.pkcs12.toPkcs12Asn1(
keys.privateKey, [cert], password,
{generateLocalKeyId: true, friendlyName: 'test'},
{algorithm: '3des'});

var newPkcs12Der = forge.asn1.toDer(newPkcs12Asn1).getBytes();
var p12b64 = forge.util.encode64(newPkcs12Der);

var downloadLink = document.createElement("a");
downloadLink.download = "example.p12";
downloadLink.innerHTML = "Download File";
downloadLink.setAttribute('href', 'data:application/x-pkcs12;base64,' + p12b64);
downloadLink.style.display = "none";

downloadLink.click();

注意:

  • 我也无法在 Mozilla 证书存储中导入文件。所以 p12 文件可能有问题?
  • Windows 证书存储在导入时正确验证我的私钥密码,仅完成阶段失败。

【问题讨论】:

  • keys.privateKey 的伪造格式(从 webcrypto 导出)?我猜{generateLocalKeyId: true, friendlyName: 'test'}, {algorithm: '3des'} 是一个错字。它认为应该是{generateLocalKeyId: true, friendlyName: 'test',algorithm: '3des'}
  • 你能用RSASSA-PKCS1-v1_5代替RSA-PSS吗? .只是为了检查Windows是否支持它。也尝试使用 KeystoreExplorer 打开 .p12
  • 实际上algorithm: '3des' 是问题所在。我更正了语法错误。它现在适用于RSASSA-PKCS1-v1_5RSA-PSS。但如果没有3des,它就不起作用。顺便谢谢。

标签: javascript windows ssl ssl-certificate webcrypto-api


【解决方案1】:

如cmets所示,问题是pkcs12编码参数有语法错误

 {generateLocalKeyId: true, friendlyName: 'test',algorithm: '3des'}

需要设置algorithm: '3des',因为forge默认使用aes-128加密p12。

正如在article 中可以看到的那样,标准化 PKCS#12 的 RFC7292 并未指定需要支持 AES,但有足够的信息以可互操作的方式使用它。 Windows(甚至 windows10)无法处理使用更安全的加密方案和密码生成的文件。那么,可以使用的最安全的算法是triple-des

【讨论】:

    猜你喜欢
    • 2011-06-23
    • 2013-05-25
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2020-08-23
    相关资源
    最近更新 更多