Luk*_*uke 7 c# asp.net x509certificate2 apns-sharp
我试图在Rackspace Cloud中的ASP.NET Web服务中使用X509Certificate.我有一种感觉,云节点上的证书存储可能会导致问题.我也有一个与此相关的问题,除了我在SslStream.AuthenticateAsClient上接收使用iPhone Apple推送通知提供程序(apns-sharp)时的异常C#
在apns-sharp项目中,我使用以下代码:
certificate = new X509Certificate2(p12File)
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个异常并将代码更改为以下解决了X509Certificate2异常.新代码如下:
certificate = new X509Certificate2(p12File, String.Empty, X509KeyStorageFlags.MachineKeySet);
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以在ASP.NET中使用X509Certificate2而不使用证书存储?证书存储是否会导致Rackspace Cloud节点出现问题?
更新#1 Rackspace告诉我不允许访问本地机器证书商店.有没有其他方法可以绕过使用证书存储区?也许使用第三方图书馆?
第一个构造函数不起作用的原因是 ASP.NET 不加载用户配置文件存储,如果您不使用X509KeyStorageFlags. 但是,机器存储始终由 ASP.NET 加载,这就是第二个构造函数起作用的原因。
我假设您打算使用证书上的私钥进行加密或创建数字签名(散列),在这种情况下,您无法避免使用证书存储,因为只能从导入的证书以编程方式访问私钥,并且不直接来自 blob 或文件。
我认为如果证书数据仅包含公钥(因为没有要保护的敏感数据),则不会使用证书存储 - 我注意到,当我打算使用证书时,我只需要指定机器存储包含私钥。
不过,我无法评论 Rackspace 的情况 - 在部分受信任的环境中运行的代码中导入证书可能会出现问题,因为加载私钥容器需要特定的权限,而这些权限可能不会授予您的程序集。