我有一个自签名根证书,是使用 CERTENROLL.dll 的 CX509CertificateRequest 证书功能在 C# 中生成的。
我想编写一个函数,使用相同的 API 生成由我的根签名的客户端证书。然而,我能找到的唯一不生成自签名证书的 CertEnroll 选项需要经过身份验证的 CA。
似乎有一个用于设置 SignerCertificate 的标志,但它总是无法初始化。
//Initialize cert
var cert = new CX509CertificateRequestCertificate();
//take care of signer
cert.Issuer = issuen;
CSignerCertificate sc = new CSignerCertificate();
var raw = SEScert.GetRawCertData();
var rawStr=Convert.ToBase64String(raw);
sc.Initialize(false, X509PrivateKeyVerify.VerifyNone,
EncodingType.XCN_CRYPT_STRING_BASE64, rawStr); //fails here
cert.SignerCertificate = sc;
有谁知道如何生成由我的根签名的客户端 CX509CertificateRequest ?
任何帮助或建议将不胜感激。
我能够解决这个问题。
SEScert 的编码是十六进制字符串而不是 base64,机器上下文也应设置为 true 而不是 false,正确的代码如下所示:
ISignerCertificate signerCertificate = new CSignerCertificate();
signerCertificate.Initialize(true, X509PrivateKeyVerify.VerifyNone,EncodingType.XCN_CRYPT_STRING_HEX, SEScert.GetRawCertDataString());
cert.SignerCertificate = (CSignerCertificate)signerCertificate;
希望这对将来的其他人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)