首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能代表用户请求SmartCard证书

不能代表用户请求SmartCard证书
EN

Stack Overflow用户
提问于 2019-04-11 15:47:25
回答 1查看 523关注 0票数 1

我正在创建一个服务,让用户只在SmartCard域中使用智能卡(因此我无法通过用户身份验证,因为他们没有注册智能卡,所以我使用其他身份验证方法对用户进行身份验证),然后用户发送给我他的CSR,但是当我试图代表用户创建证书时,我会得到以下错误:

CertEnroll::CX509注册::登记:这种类型的证书只能颁发给用户。:未为应用程序0x8004e00c (-2147164148 CONTEXT_E_ROLENOTFOUND)配置指定的角色

我创建了一个可以访问Enrollment Agent Certificate的服务帐户,并为该帐户创建了一个证书。我还创建了一个智能卡模板,它需要注册代理证书签名来代表用户请求证书,并且允许该服务帐户完全访问该模板。应用程序在使用该服务帐户作为标识的中运行,我使用以下代码请求证书(它使用CERTENROLLLib):

代码语言:javascript
复制
_cSignerCertificateWrapper.Initialize(true, X509PrivateKeyVerify.VerifyNone, EncodingType.XCN_CRYPT_STRING_BASE64, Convert.ToBase64String(_x509Certificate2Wrapper.RawData));
var innerRequest = new CX509CertificateRequestPkcs10Class();
innerRequest.InitializeDecode("ContextMachine", EncodingType.XCN_CRYPT_STRING_BINARY);
innerRequest.InitializeDecode(request);

_cx509CertificateRequestCmcWrapper.InitializeFromInnerRequestTemplateName(innerRequest, templateName);
_cx509CertificateRequestCmcWrapper.RequesterName = requesterName;
_cx509CertificateRequestCmcWrapper.SignerCertificate = _cSignerCertificateWrapper.WrappedObject;
_cx509CertificateRequestCmcWrapper.Encode();

_cx509EnrollmentWrapper.InitializeFromRequest(_cx509CertificateRequestCmcWrapper.WrappedObject);

try
{
    _cx509EnrollmentWrapper.Enroll();
}

我还切换了IIS帐户,使其在我的用户下运行,但仍然会遇到错误。我是否必须以某种方式对CA进行身份验证,还是将IIS用于请求(我确实通过检查此System.Security.Principal.WindowsIdentity.GetCurrent().Name的输出来验证它是否在上下文中运行)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 00:49:47

您将获得证书作为机器上下文,请更改以下行:

代码语言:javascript
复制
_cSignerCertificateWrapper.Initialize(true, X509PrivateKeyVerify.VerifyNone, EncodingType.XCN_CRYPT_STRING_BASE64, Convert.ToBase64String(_x509Certificate2Wrapper.RawData));

至:

代码语言:javascript
复制
_cSignerCertificateWrapper.Initialize(false, X509PrivateKeyVerify.VerifyNone, EncodingType.XCN_CRYPT_STRING_BASE64, Convert.ToBase64String(_x509Certificate2Wrapper.RawData));

并移除这一行

innerRequest.InitializeDecode("ContextMachine", EncodingType.XCN_CRYPT_STRING_BINARY);

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

https://stackoverflow.com/questions/55636479

复制
相关文章

相似问题

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