Javascript PKI.js V2和WebCrypto-使用CSR(证书签名请求)添加主题替代名称
我在PKI.js和webcryptoapi的V1中有一个完整的功能代码,其中添加了带有CSR的主题替代名称(DNS:)。我正在用V2做同样的尝试,但是代码没有运行 版本1的完整功能示例 V1示例使用。此示例不使用CSR添加主题备选名称 请下载此zip文件:在文件csrhelp master\app\src\csrhelps\CsrhelpService.js行号516中,您将找到以下代码:Javascript PKI.js V2和WebCrypto-使用CSR(证书签名请求)添加主题替代名称,javascript,webcrypto-api,Javascript,Webcrypto Api,我在PKI.js和webcryptoapi的V1中有一个完整的功能代码,其中添加了带有CSR的主题替代名称(DNS:)。我正在用V2做同样的尝试,但是代码没有运行 版本1的完整功能示例 V1示例使用。此示例不使用CSR添加主题备选名称 请下载此zip文件:在文件csrhelp master\app\src\csrhelps\CsrhelpService.js行号516中,您将找到以下代码: pkcs10_simpl.attributes.push(new org.pkijs.simpl.ATTR
pkcs10_simpl.attributes.push(new org.pkijs.simpl.ATTRIBUTE({
type: "1.2.840.113549.1.9.14", // pkcs-9-at-extensionRequest
values: [(new org.pkijs.simpl.EXTENSIONS({
extensions_array: [
new org.pkijs.simpl.EXTENSION({
extnID: "2.5.29.14",
critical: false,
extnValue: (new org.pkijs.asn1.OCTETSTRING({
value_hex: result
})).toBER(false)
})
]
})).toSchema()]
}));
pkcs10.attributes.push(new Attribute({
type: "1.2.840.113549.1.9.14", // pkcs-9-at-extensionRequest
values: [new Extensions({
extensions: [new Extension({
extnID: "2.5.29.14",
critical: false,
extnValue: new OctetString({ valueHex: result }).toBER(false)
})]
}).toSchema()]
}));
我用下面给出的代码替换了上面的代码,行号480到511(在#region SubjectKeyIdentifier中)而且工作正常。
var extensions = new org.pkijs.simpl.EXTENSIONS({
extensions_array: [
new org.pkijs.simpl.EXTENSION({
extnID: "2.5.29.14",
critical: false,
extnValue: (new org.pkijs.asn1.OCTETSTRING({ value_hex: result })).toBER(false)
})
]
});
var altNames = new org.pkijs.simpl.GENERAL_NAMES({
names: [
new org.pkijs.simpl.GENERAL_NAME({
NameType: 2,
Name: "domain1.com, DNS:domain2.com, DNS:domain3.com"
})
]
});
extensions.extensions_array.push(new org.pkijs.simpl.EXTENSION({
extnID: "2.5.29.17", // subjectAltName
critical: false,
extnValue: altNames.toSchema().toBER(false)
}));
var attribute = new org.pkijs.simpl.ATTRIBUTE({
type: "1.2.840.113549.1.9.14", // pkcs-9-at-extensionRequest
values: [extensions.toSchema()]
});
pkcs10_simpl.attributes.push(attribute);
第2版
现在我用一个V2示例尝试同样的方法。请注意,我直接从pkijs.org链接而不是github获取了这段代码
请下载此zip文件:在V2 PKCS10_complex_example/PKCS10_complex_example.js行号16784的文件中,您可以找到以下代码:
pkcs10_simpl.attributes.push(new org.pkijs.simpl.ATTRIBUTE({
type: "1.2.840.113549.1.9.14", // pkcs-9-at-extensionRequest
values: [(new org.pkijs.simpl.EXTENSIONS({
extensions_array: [
new org.pkijs.simpl.EXTENSION({
extnID: "2.5.29.14",
critical: false,
extnValue: (new org.pkijs.asn1.OCTETSTRING({
value_hex: result
})).toBER(false)
})
]
})).toSchema()]
}));
pkcs10.attributes.push(new Attribute({
type: "1.2.840.113549.1.9.14", // pkcs-9-at-extensionRequest
values: [new Extensions({
extensions: [new Extension({
extnID: "2.5.29.14",
critical: false,
extnValue: new OctetString({ valueHex: result }).toBER(false)
})]
}).toSchema()]
}));
我将上面的代码(在region SubjectKeyIdentifier中)替换为下面给出的代码,行号16749到16780
var extns = new Extensions();
extns.extensions = new Array();
extns.extensions.push(new Extension({
extnID: "2.5.29.14",
critical: false,
extnValue: (new OctetString({ valueHex: result })).toBER(false)
}));
var altNames = new GeneralNames({
names: [
new GeneralName({
NameType: 2,
Name: "domain1.com, DNS:domain2.com, DNS:domain3.com"
})
]
});
extns.extensions.push(new Extension({
extnID: "2.5.29.17", // subjectAltName
critical: false,
extnValue: altNames.toSchema().toBER(false)
}));
var attribute = new Attribute({
type: "1.2.840.113549.1.9.14", // pkcs-9-at-extensionRequest
values: [extns.toSchema()]
});
pkcs10.attributes.push(attribute);
但这不是在运行。我找不出哪里做错了。请帮忙
我已经附加了V1和V2示例(修改)作为zip:链接在上面给出
提前感谢。更新2019-02-05:备选方案(用于节点)
多年来,我又回到了这个问题上,我终于觉得有足够的唠叨来创造更小的选择:
- Node.js
- (RSA)
- (ECDSA)