我有一個 CSR,我可以使用 pkijs.org lib 決議所有資料,但我沒有運氣決議替代名稱資料。怎么可能用javascript做?其他一些庫可以使用,我猜,你知道嗎?
uj5u.com熱心網友回復:
遵循 pkijs 在此處https://pkijs.org/docs/classes/CertificationRequest.html提供的 CertificationRequest 類檔案。我們可以看到一個CSR的結構。主題替代名稱將存盤在物件attributes的CertificationRequest屬性中。但是其中的結構attributes非常復雜,無法使其成為純文本。這是我用于列印主題替代名稱的代碼
const pkijs = require('pkijs');
const utils = require("pvtsutils");
const asn1js = require("asn1js");
let base64 = "<your_csr_in_base64>"
let csrraw = utils.Convert.FromBase64(base64);
console.log(csrraw)
const pkcs10 = pkijs.CertificationRequest.fromBER(csrraw);
let seq = pkcs10.attributes[0].values[0];
let exts = pkijs.Extensions.fromBER(seq.toBER(false));
console.log(exts);
var san = getExtentionsForSANFromExtensions(exts);
console.log(san)
if (san != undefined) {
san.names.forEach(element => {
console.log(element.type " = " element.value)
});
}
function getExtentionsForSANFromExtensions(exts){
for (var i = 0 ; i< exts.extensions.length; i ) {
var ext = exts.extensions[i];
if(ext.extnID == '2.5.29.17') {
var octetString = asn1js.fromBER(ext.extnValue.toBER(false)).result;
return pkijs.GeneralNames.fromBER(octetString.getValue());
}
}
}
我已經測驗了這段代碼,它可以與 Keystore Explorer 生成的 CSR 一起正常作業。尚未使用其他工具測驗生成支持主題替代名稱的 CSR。
干杯!
uj5u.com熱心網友回復:
如果您有 CSR 并需要從中提取替代名稱資料,則可以使用以下命令:
openssl req -in csr.pem -noout -text
這將列印出整個 CSR,包括替代名稱資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/511462.html
標籤:javascriptsslopensslpki企业社会责任
