C# Azure上的Certenroll-生成自签名证书

C# Azure上的Certenroll-生成自签名证书,c#,azure,self-signed,x509certificate2,certenroll,C#,Azure,Self Signed,X509certificate2,Certenroll,我已使用Certenroll(CERTENROLLLib)创建了一个自签名证书。所有功能都在本地工作,但只要我将其部署到Azure中,我就会得到: 服务器API错误:消息: CertEnroll::CX509Enrollment::\u CreateRequest:访问被拒绝。 0x80070005(WIN32:5错误\u访问被拒绝),堆栈跟踪:在 CERTENROLLLib.IX509Enrollment2.CreateRequest(编码类型编码) 在 Foo.Api.Core.Provid

我已使用CertenrollCERTENROLLLib)创建了一个自签名证书。所有功能都在本地工作,但只要我将其部署到Azure中,我就会得到:

服务器API错误:消息: CertEnroll::CX509Enrollment::\u CreateRequest:访问被拒绝。 0x80070005(WIN32:5错误\u访问被拒绝),堆栈跟踪:在 CERTENROLLLib.IX509Enrollment2.CreateRequest(编码类型编码)
在 Foo.Api.Core.Providers.CertificateProvider.GenerateBase64EncodedPfx(字符串 subjectName,Int32 certificateValidityInYears,字符串密码)位于 Foo.Api.Core.Services.CertificateService.d_u4.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Foo.ServerApi.Services.DocumentSigningService.d_u7.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Foo.ServerApi.Services.DocumentSigningService.d_u5.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.ValidateEnd(任务任务)
在 Foo.ServerApi.Controllers.DocumentController.c\u DisplayClass10\u 1.d.MoveNext()

如果使用:

var cert = new CX509CertificateRequestCertificate();
            cert.InitializeFromPrivateKey(X509CertificateEnrollmentContext.ContextMachine, privateKey, "");
var cert = new CX509CertificateRequestCertificate();
            cert.InitializeFromPrivateKey(X509CertificateEnrollmentContext.ContextUser, privateKey, "");

服务器API错误:消息: CertEnroll::CX509CertificateRequestCertificate::InitializeFromPrivateKey: 参数不正确。0x80070057(WIN32:87) 错误(无效参数),StackTrace:at CERTENROLLLib.IX509CertificateRequestCertificate2.InitializeFromPrivateKey(X509CertificateRollmentContext 上下文,IX509PrivateKey pPrivateKey,字符串strTemplateName)位于 Foo.Api.Core.Providers.CertificateProvider.GenerateBase64EncodedPfx(字符串 subjectName,Int32 certificateValidityInYears,字符串密码)位于 Foo.Api.Core.Services.CertificateService.d_u4.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Foo.ServerApi.Services.DocumentSigningService.d_u7.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Foo.ServerApi.Services.DocumentSigningService.d_u5.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.ValidateEnd(任务任务)
在 Foo.ServerApi.Controllers.DocumentController.c\u DisplayClass10\u 1.d.MoveNext()

如果使用:

var cert = new CX509CertificateRequestCertificate();
            cert.InitializeFromPrivateKey(X509CertificateEnrollmentContext.ContextMachine, privateKey, "");
var cert = new CX509CertificateRequestCertificate();
            cert.InitializeFromPrivateKey(X509CertificateEnrollmentContext.ContextUser, privateKey, "");
有没有办法通过Azure上的Certenroll解决此问题

编辑:导致我找到正确路径的最终错误

服务器API错误:消息:CertEnroll::CX509PrivateKey::Create: 系统找不到指定的文件。0x80070002(WIN32:2) 错误(未找到文件),StackTrace:at CERTENROLLLib.IX509PrivateKey2.Create()位于 Foo.Api.Core.Providers.CertificateProvider.GenerateBase64EncodedPfx(字符串 subjectName,Int32 certificateValidityInYears,字符串密码)位于 Foo.Api.Core.Services.CertificateService.d_u4.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Foo.ServerApi.Services.DocumentSigningService.d_u7.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Foo.ServerApi.Services.DocumentSigningService.d_u5.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskWaiter.ValidateEnd(任务任务)
在 Foo.ServerApi.Controllers.DocumentController.c\u DisplayClass10\u 1.d.MoveNext()

  • InitializeFromPrivateKey
  • 创建私钥设置时
    privateKey.MachineContext=false
  • 在Azure上添加新的应用程序设置
  • 网站加载用户配置文件=1

    这对我来说很有用