博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript调用微软CertEnroll实现CSP数字证书申请
阅读量:3696 次
发布时间:2019-05-21

本文共 3733 字,大约阅读时间需要 12 分钟。

本文主要通过简单实例,展示javascript调用微软CertEnroll及相关控件,实现对CSP数字证书的申请操作。

 

1. CSP读取及列表展示

 

...var providerList = document.getElementById("cspprovider");var certEnrollFactory = document.getElementById("oCertEnrollFactory");var csps = certEnrollFactory.CreateObject("X509Enrollment.CCspInformations");var csp = certEnrollFactory.CreateObject("X509Enrollment.CCspInformation");var providerName = "";var index = 0;	csps.AddAvailableCsps();while (csps.Count > index) {    csp = csps.ItemByIndex(index);    providerName = csp.Name;    option = new Option(providerName, index, false, true);    providerList.add(option);    providerName = "";    index++;}...

 

2. 生成P10

 

...var pkcs10 = "";var dn = 
;var csp =
;var keysize =
;var certEnrollFactory = document.getElementById("oCertEnrollFactory");var csp = certEnrollFactory.CreateObject("X509Enrollment.CCspInformation");var csps = certEnrollFactory.CreateObject("X509Enrollment.CCspInformations");var privateKey = certEnrollFactory.CreateObject("X509Enrollment.CX509PrivateKey");var request = certEnrollFactory.CreateObject("X509Enrollment.CX509CertificateRequestPkcs10")var objectIds = certEnrollFactory.CreateObject("X509Enrollment.CObjectIds");var objectId = certEnrollFactory.CreateObject("X509Enrollment.CObjectId");var x509ExtensionEnhancedKeyUsage = certEnrollFactory.CreateObject("X509Enrollment.CX509ExtensionEnhancedKeyUsage");var extensionTemplate = certEnrollFactory.CreateObject("X509Enrollment.CX509ExtensionTemplateName");var distinguishedName = certEnrollFactory.CreateObject("X509Enrollment.CX500DistinguishedName");var enroll = certEnrollFactory.CreateObject("X509Enrollment.CX509Enrollment");csp.InitializeFromName(csp);csps.Add(objCSP);privateKey.Length = parseInt(keysize, 10);privateKey.KeySpec = 2;privateKey.ExportPolicy = 1;privateKey.ProviderName = objCSP.Name;privateKey.ProviderType = objCSP.Type;privateKey.KeyUsage = 16777215;privateKey.MachineContext = 0;privateKey.CspInformations = csps;request.InitializeFromPrivateKey(1, privateKey, "");objectId.InitializeFromValue("1.3.6.1.5.5.7.3.2");extensionTemplate.InitializeEncode("1.3.6.1.5.5.7.3.2,1.3.6.1.4.1.311.20.2.2,1.3.6.1.4.1.311.10.3.12,1.3.6.1.5.5.7.3.4");request.X509Extensions.Add(extensionTemplate);distinguishedName.Encode(dn, 0);request.Subject = distinguishedName;enroll.InitializeFromRequest(request);pkcs10 = enroll.CreateRequest(1);pkcs10 = pkcs10.replace(/\r\n/g, "");...

 

3. 安装证书

 

...	var certEnrollFactory = document.getElementById("oCertEnrollFactory");var enroll = certEnrollFactory.CreateObject("X509Enrollment.CX509Enrollment");enroll.Initialize(1)enroll.InstallResponse(4, pkcs7, 0x7, "")...

 

4. 证书读取

 

...var certSN = 
;var commonName =
;var myStore = new ActiveXObject("CAPICOM.Store");var certificate; myStore.Open(2, "My", 0);var filteredCertificates = myStore.Certificates.Find(1, commonName);for (i = 1; i <= filteredCertificates.Count; i++) { certificate = filteredCertificates.Item(i); if (certificate.SerialNumber == certSN) { break; }}...

 

5. 数字证书选择与签名

 

...var plainText = "HELLO";var signedData = "";var signedData = new ActiveXObject("CAPICOM.SignedData");var timeAttribute = new ActiveXObject("CAPICOM.Attribute");var signer = new ActiveXObject("CAPICOM.Signer");var myStore = new ActiveXObject("CAPICOM.Store");    myStore.Open(2, "My", 0);var today = new Date();var filteredCertificates = myStore.Certificates;var selectedCertificate = filteredCertificates.Select();signedData.Content = plainText;signer.Certificate = selectedCertificate;signer.Options = 2;timeAttribute.Name = 0;timeAttribute.Value = today.getVarDate();signer.AuthenticatedAttributes.Add(timeAttribute);signedData = signedData.Sign(signer, false, 0);...

转载地址:http://xwucn.baihongyu.com/

你可能感兴趣的文章
MAC版Proxyee Down百度网盘高速下载器教程
查看>>
AJAX基础笔记
查看>>
MAC 安装使用 MAMP
查看>>
Web 前端开发规范手册
查看>>
MAC系统Vue框架新建开发项目
查看>>
Postman 使用方法详解
查看>>
ES6 学习笔记
查看>>
webpack基础笔记
查看>>
MAC系统下安装 MongoDB
查看>>
ECharts数据可视化学习
查看>>
MAC中xxx.app损坏,应该将它移到废纸篓的问题
查看>>
JavaScript数据结构与算法笔记
查看>>
剑指Offer(JavaScript版)
查看>>
Git 基础教程
查看>>
CSS布局实战
查看>>
JavaScript 高级笔记
查看>>
HTML5 新增 API
查看>>
JavaScript BOM/DOM 笔记
查看>>
JavaScript 正则表达式笔记
查看>>
HTML5 Canvas 基础笔记
查看>>