首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#使用certenroll.dll在没有CA的情况下生成非自签名客户端CX509Certificate请求

C#使用certenroll.dll在没有CA的情况下生成非自签名客户端CX509Certificate请求
EN

Stack Overflow用户
提问于 2013-07-20 07:20:46
回答 1查看 2.3K关注 0票数 3

我有一个使用CERTENROLL.dll的CX509CertificateRequest证书功能在C#中生成的自签名根证书。

我想编写一个函数,使用相同的API生成由我的root签名的客户端证书。但是,我能找到的唯一不生成自签名证书的CertEnroll选项需要经过身份验证的CA。

似乎有一个用于设置SignerCertificate的标志,但它总是无法初始化。

代码语言:javascript
复制
        //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吗?

任何帮助或建议都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-22 23:42:20

我能够解决这个问题。

SEScert的编码是十六进制字符串,而不是base64,而且机器上下文应该设置为true而不是false,正确的代码如下所示:

代码语言:javascript
复制
ISignerCertificate signerCertificate = new CSignerCertificate();
signerCertificate.Initialize(true, X509PrivateKeyVerify.VerifyNone,EncodingType.XCN_CRYPT_STRING_HEX, SEScert.GetRawCertDataString());
cert.SignerCertificate = (CSignerCertificate)signerCertificate; 

希望这对将来的其他人有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17756940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档