作者:1994-MMMs | 来源:互联网 | 2023-10-11 02:47
我已经使用 Certenroll ( CERTENROLLLib )构建了一个创建自签名证书。所有这些都在本地运行,但是一旦我部署到 Azure ,我就会得到:
服务器API错误:消息:
CertEnroll :: CX509Enrollment :: _ CreateRequest:访问被拒绝。
0x80070005(WIN32:5 ERROR_accESS_DENIED),StackTrace:在
CERTENROLLLib.IX509Enrollment2.CreateRequest(EncodingType编码)
在
Foo.Api.Core.Providers.CertificateProvider.GenerateBase64EncodedPfx(字符串
subjectName,Int32 certificateValidityInYears,字符串密码)位于
Foo.Api.Core.Services.CertificateService.d__4.MoveNext()
---从上一个引发异常的位置开始的堆栈跟踪-
System.Runtime.CompilerServices.Taskawaiter.ThrowForNonSuccess(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)
Foo.ServerApi.Services.DocumentSigningService.d__7.MoveNext()
---从上一个引发异常的位置开始的堆栈跟踪-
System.Runtime.CompilerServices.Taskawaiter.ThrowForNonSuccess(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)
Foo.ServerApi.Services.DocumentSigningService.d__5.MoveNext()
---从上一个引发异常的位置开始的堆栈跟踪-
System.Runtime.CompilerServices.Taskawaiter.ThrowForNonSuccess(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.ValidateEnd(任务任务)
在
Foo.ServerApi.Controllers.DocumentController。 c__DisplayClass10_1。 d.MoveNext()
如果使用:
var cert = new CX509CertificateRequestCertificate();
cert.InitializeFromPrivateKey(X509CertificateEnrollmentContext.ContextMachine,privateKey,"");
或
服务器API错误:消息:
CertEnroll :: CX509CertificateRequestCertificate :: InitializeFromPrivateKey:
参数错误。 0x80070057(WIN32:87
ERROR_INVALID_PARAMETER),StackTrace:位于
CERTENROLLLib.IX509CertificateRequestCertificate2.InitializeFromPrivateKey(X509CertificateEnrollmentContext
上下文,IX509PrivateKey pPrivateKey,字符串strTemplateName)位于
Foo.Api.Core.Providers.CertificateProvider.GenerateBase64EncodedPfx(字符串
subjectName,Int32 certificateValidityInYears,字符串密码)位于
Foo.Api.Core.Services.CertificateService.d__4.MoveNext()
---从上一个引发异常的位置开始的堆栈跟踪-
System.Runtime.CompilerServices.Taskawaiter.ThrowForNonSuccess(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)
Foo.ServerApi.Services.DocumentSigningService.d__7.MoveNext()
---从上一个引发异常的位置开始的堆栈跟踪-
System.Runtime.CompilerServices.Taskawaiter.ThrowForNonSuccess(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)
Foo.ServerApi.Services.DocumentSigningService.d__5.MoveNext()
---从上一个引发异常的位置开始的堆栈跟踪-
System.Runtime.CompilerServices.Taskawaiter.ThrowForNonSuccess(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.ValidateEnd(任务任务)
在
Foo.ServerApi.Controllers.DocumentController。 c__DisplayClass10_1。 d.MoveNext()
如果使用:
var cert = new CX509CertificateRequestCertificate();
cert.InitializeFromPrivateKey(X509CertificateEnrollmentContext.ContextUser,"");
有什么方法可以在Azure上使用Certenroll解决此问题?
编辑:最终错误,导致我找到正确的路径。
服务器API错误:消息:CertEnroll :: CX509PrivateKey :: Create:The
系统找不到指定的文件。 0x80070002(WIN32:2
ERROR_FILE_NOT_FOUND),StackTrace:位于
CERTENROLLLib.IX509PrivateKey2.Create()在
Foo.Api.Core.Providers.CertificateProvider.GenerateBase64EncodedPfx(字符串
subjectName,Int32 certificateValidityInYears,字符串密码)位于
Foo.Api.Core.Services.CertificateService.d__4.MoveNext()
---从上一个引发异常的位置开始的堆栈跟踪-
System.Runtime.CompilerServices.Taskawaiter.ThrowForNonSuccess(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)
Foo.ServerApi.Services.DocumentSigningService.d__7.MoveNext()
---从上一个引发异常的位置开始的堆栈跟踪-
System.Runtime.CompilerServices.Taskawaiter.ThrowForNonSuccess(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)
Foo.ServerApi.Services.DocumentSigningService.d__5.MoveNext()
---从上一个引发异常的位置开始的堆栈跟踪-
System.Runtime.CompilerServices.Taskawaiter.ThrowForNonSuccess(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.HandleNonSuccessAndDebuggerNotification(任务
任务)
System.Runtime.CompilerServices.Taskawaiter.ValidateEnd(任务任务)
在
Foo.ServerApi.Controllers.DocumentController。 c__DisplayClass10_1。 d.MoveNext()
- 在
X509CertificateEnrollmentContext.ContextUser
中使用InitializeFromPrivateKey
- 创建私钥设置
privateKey.MachineCOntext= false;
时
- 在 Azure 上添加新的应用程序设置
WEBSITE_LOAD_USER_PROFILE = 1
对我有用的