我正在尝试在 Rackspace 云中的 ASP.NET Web 服务中使用 X509Certificate。我有一种感觉,存储在云节点上的证书可能会引起问题。我也有一个与此相关的问题,但我收到的问题是使用 iPhone Apple 推送通知提供程序 (apns-sharp) C# 时出现 SslStream.AuthenticateAsClient 异常 https://stackoverflow.com/questions/2094735/sslstream-authenticateasclient-exception-when-using-iphone-apple-push-notificatio
在 apns-sharp 项目中,我使用了以下代码:
certificate = new X509Certificate2(p12File)
但是,我收到了一个异常,并将代码更改为以下内容解决了 X509Certificate2 异常。新代码如下:
certificate = new X509Certificate2(p12File, String.Empty, X509KeyStorageFlags.MachineKeySet);
我想知道是否可以在 ASP.NET 中使用 X509Certificate2 而不使用证书存储?证书存储是否会导致 Rackspace 云节点出现问题?
更新#1Rackspace 告诉我不允许访问本地计算机证书存储。还有其他方法可以绕过使用证书存储吗?也许使用第三方库?
第一个构造函数不起作用的原因是 ASP.NET 不加载用户配置文件存储,如果您不使用指定存储位置,则这是默认存储X509KeyStorageFlags
。但是,机器存储始终由 ASP.NET 加载,这就是第二个构造函数起作用的原因。
我假设您打算使用证书上的私钥进行加密或创建数字签名(散列),在这种情况下,您无法避免使用证书存储,因为只能从导入的证书以编程方式访问私钥,并且不直接来自 blob 或文件。
我认为如果证书数据仅包含公钥(因为没有要保护的敏感数据),则不会使用证书存储 - 我注意到,当我打算使用证书时,我只需要指定机器存储包含私钥。
不过,我无法评论 Rackspace 的情况 - 在部分受信任的环境中运行的代码中导入证书可能会出现问题,因为加载私钥容器需要特定的权限,而这些权限可能不会授予您的程序集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)