我正在尝试通过任何代码和脚本创建一个网页,以便自动下载.cer
文件并将其导入任何客户端的受信任根目录。
例如:一个java脚本,它从我的网络服务器目录下载.cer
文件,并自动将其导入客户端的受信任根目录。
我已经通过本地客户端的VBScript代码尝试过了,但现在我想通过网页自动完成这项工作,而不会通知浏览用户。
答案 0 :(得分:0)
添加受信任的根证书是一项非常危险的操作。没有通知浏览用户,绝对没有办法做到这一点,也不应该这样做。
答案 1 :(得分:0)
亲爱的,我搜索了许多页面&库找到通过javascript导入seft签名ca的最佳方法,并找到两个方法:
` `
> <html>
> <head>
> <title>Certificate install test2</title>
> </head>
> <body>
> <object id='CertEnroll' name='CertEnroll'></object>
> <object id='XEnroll' name='XEnroll'></object>
> <script language="javascript">
var CERT_ENROLL_CLASSID = "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09";
function InstallCertChainCEnroll(pkcs7){
CertEnroll.classid = CERT_ENROLL_CLASSID;
var enrollObj = CertEnroll.CreateObject("X509Enrollment.CX509Enrollment");
enrollObj.Initialize(1);
for (var i=0;i<pkcs7.length;i++){
enrollObj.InstallResponse(4, pkcs7[i], 6, "");
}
return true;
}
document.write("<br>Installing certificate...");
try{
var pkcs7Chain = new Array();
pkcs7Chain[0] =
"-----BEGIN CERTIFICATE-----" +
"MIIDUzCCAjugAwIBAgIIMPQ+41XDpAAwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE" +
"AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw" +
....
"QCU+xDRP4/o/HHR5T0MEYI+bmuWfF6hbGai6r4VlLmnQHb0Rs5mGDN3eHj0lyMhT" +
"NiNSvPMvQviVxEsjwBjpYhe53cI4bxIVOpqW8GvxUot/Yakdy5xC" +
"-----END CERTIFICATE-----"
InstallCertChainCEnroll(pkcs7Chain);
} catch (ex){
document.write("<br>" + ex);
document.write("<br>" + ex.message);
}
> </script>
> </body>
> </html>
` `
和两个:
` `
> <html>
> <head>
> <title>Certificate install test2</title>
> </head>
> <body>
> <object id='CertEnroll' name='CertEnroll'></object>
> <object id='XEnroll' name='XEnroll'></object>
> <script language="javascript">
var CERT_ENROLL_CLASSID = "clsid:884e2049-217d-11da-b2a4-000e7bbb2b09";
function InstallCertChainCEnroll(pkcs7){
CertEnroll.classid = CERT_ENROLL_CLASSID;
var enrollObj = CertEnroll.CreateObject("X509Enrollment.CX509Enrollment");
enrollObj.Initialize(1);
for (var i=0;i<pkcs7.length;i++){
enrollObj.InstallResponse(4, pkcs7[i], 6, "");
}
return true;
}
document.write("<br>Installing certificate...");
try{
var pkcs7Chain = new Array();
pkcs7Chain[0] =
"-----BEGIN CERTIFICATE-----" +
"MIIDUzCCAjugAwIBAgIIMPQ+41XDpAAwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UE" +
"AwwIQWRtaW5DQTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0Uw" +
....
"QCU+xDRP4/o/HHR5T0MEYI+bmuWfF6hbGai6r4VlLmnQHb0Rs5mGDN3eHj0lyMhT" +
"NiNSvPMvQviVxEsjwBjpYhe53cI4bxIVOpqW8GvxUot/Yakdy5xC" +
"-----END CERTIFICATE-----"
InstallCertChainCEnroll(pkcs7Chain);
} catch (ex){
document.write("<br>" + ex);
document.write("<br>" + ex.message);
}
> </script>
> </body>
> </html>
` `
但问题是使用第一个代码会导致此错误: 消息:CertEnroll :: CX509EnrollmentWebClassFactory :: CreateObject:操作已被用户取消。 0x800704c7(WIN32:1223) 请参阅: microsoft msdn blog
当我使用第二个代码时 在中级证书颁发机构区域安装我的cer文件!!!!!!!! 发生的事情是pkcs7Chain变量中的此证书是根证书,IstallResponse方法应该在受信任的根证书颁发机构中安装此人,但是它是否安装在中级证书颁发机构区域中。 我可以通过网页中的javascript启动cmd并将ca从中间更改(替换)到受信任的根目录吗? (我可以使用lauch cmd)