在InitializeFromPrivateKey()中指定X509Enrollment.CX509CertificateRequestPkcs10对象的模板参数时,我遇到了问题。除“用户”模板之外的任何其他内容都会导致以下异常:
CertEnroll::CX509CertificateRequestPkcs10::InitializeFromPrivateKey:此CA不支持请求的证书模板。0x80094800 (-2146875392)
有一个特定的证书模板需要使用,当我尝试它时,代码会抛出异常。模板存在于CA和运行以下代码的客户端机器上。
Javascript代码如下:
<script type="text/javascript">
var sCertificate = null;
var sDistinguishedName = "C=\"\";S=\"\";L=\"\";O=\"XXXXX\";OU=\"XXXXXXX\";E=\"XXXXX@XXXX.com\";CN=\"xxxxxxx\";";
var template = "RegistrationCert"; //Anything Other than "User" fails, have tried template Oid too.
var classFactory = new ActiveXObject("X509Enrollment.CX509EnrollmentWebClassFactory");
var objEnroll = classFactory.CreateObject("X509Enrollment.CX509Enrollment");
var objPrivateKey = classFactory.CreateObject("X509Enrollment.CX509PrivateKey");
var objRequest = classFactory.CreateObject("X509Enrollment.CX509CertificateRequestPkcs10");
var objDN = classFactory.CreateObject("X509Enrollment.CX500DistinguishedName");
objPrivateKey.ProviderName = "Microsoft Enhanced Cryptographic Provider v1.0";
objPrivateKey.KeySpec = "1";
objPrivateKey.ProviderType = "1";
try
{
objRequest.InitializeFromPrivateKey(1, objPrivateKey, template);
objDN.Encode(sDistinguishedName, 0);
objRequest.Subject = objDN;
objEnroll.InitializeFromRequest(objRequest);
sCertificate = objEnroll.CreateRequest(1);
document.writeln(sCertificate);
}
catch (ex)
{
document.writeln(ex.description);
}
</script>
其他几个问题
如果你能帮我,那将是非常感谢!
附加信息
之前我看过.
发布于 2011-08-06 07:36:57
好吧,那么it..typical。
即:
var objExtensionTemplate = classFactory.CreateObject("X509Enrollment.CX509ExtensionTemplateName")
objRequest.InitializeFromPrivateKey(1, objPrivateKey, ""); //empty string, don't specify template here
objExtensionTemplate.InitializeEncode(template); //Specify Template as OID value!
objRequest.X509Extensions.Add(objExtensionTemplate);
在CA上验证该请求是针对我指定的模板类型的,并且实际上只为该类型创建了一个证书。
希望有一天这个能帮到别人。
https://stackoverflow.com/questions/6959128
复制相似问题