![](/img/trans.png)
[英]How to enable remote access in my local application - IIS Windows 10
[英]IIS 10 Application permissions to access a Cert in Certificate Manager
我是ASP和IIS菜鸟。 我住在Linux终端中,所以这是一个艰难的学习过程……
我有一个用.Net 4.6编写的C#Web API。 Web API与第三方SOAP Web服务进行通信,该服务要求使用WSE 2.0标准的X509证书对SOAP请求进行签名。 所有这些都可以在我的本地开发机器上正常工作。
我使用IIS 10和Windows Server 2016数据中心将应用程序部署到AWS Elastic Beanstalk Env。 Web API不适用于需要访问证书的任何功能。 所有其他URL都可以正常工作。
我已将证书导入到本地计算机证书存储中。 这是一个简单的案例,其中我没有配置正确的权限。
如何检查IIS是否有权访问所需的证书,以及需要将什么用户添加到证书中才能为IIS应用程序提供正确的访问权限。
我没有运气就做了以下事情:
-在服务器上安装VS 2017,并成功运行控制台应用程序以测试WSE 2.0 dll是否是问题所在。 很好 -在MMC中为证书的私钥添加了对IIS_IUSRS的读取访问权限
-在MMC中为证书的私钥添加了对IUSER的读取权限
-在MMC中为证书的私钥添加了对“ IIS APPPOOL \\ DefaultAppPool”的读取权限
-修改了Programs Data Crypto目录中的RSA文件夹权限,因此不记得确切的路径了,这最终破坏了系统
所以我设法解决了。 事实证明,WSE 2.0 X509CertificateStore不能通过IIS与Windows Server 2016 Cert Manager配合使用。 我必须使用较新的System.Security.Cryptography.X509Certificates X509Store类来访问Cert,然后将X509Certificate2转换为MS Web Service2.X509Certificate。 代码如下:
X509Store store = new X509Store(StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection Certificate2Collection = store.Certificates;
X509Certificate2Collection results =
Certificate2Collection.Find(X509FindType.FindBySubjectName, (object)subject, false);
X509Certificate2 cert = results[0];
Microsoft.Web.Services2.Security.X509.X509Certificate cert =
new Microsoft.Web.Services2.Security.X509.X509Certificate(cert.Export(X509ContentType.Cert));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.