我正在尝试访问我上传到Windows Azure的证书的私钥做解密。我使用了类似于这篇文章的代码:Using DotNetOpenAuth OAuth 2 with Azure - Reading Certificate - difficulty extracting keys。 Andrew Arnott回复了引用此链接的帖子:https://github.com/AArnott/dotnetopenid/issues/16。但是我无法访问它,所以我不确定解决方案是什么。请帮忙。
基本上,当尝试将证书的私钥转换为RSACryptoProvider时。我一无所获: Dim provider As RSACryptoServiceProvider = DirectCast(certificate.PrivateKey,RSACryptoServiceProvider)
即提供者没有被分配。该代码在Azure之外完美运行。
答案 0 :(得分:2)
根据this博客文章,无法提取部署到Azure角色的证书的私钥。
在实例创建时,它们被标记为不可由GA(访客代理 - 在访客VM中运行的Windows Azure提供的代理,并提供安装证书和私钥等服务)。
来自MS白皮书:
2.1.1.4证书和私钥管理
为了降低向开发人员和管理员公开证书和私钥的风险 通过与使用它们的代码不同的机制安装。证书和私人 密钥通过SMAPI或Windows Azure门户上传,作为受保护的PKCS12(PFX)文件 通过SSL传输。那些PKCS12文件可能受密码保护,但如果是这样,密码必须是 包含在同一条消息中。 SMAPI删除密码保护(如有必要)和 使用SMAPI的公钥加密整个PKCS12 blob,并将其存储在一个秘密存储区中 FC,以及短证书名称和公钥作为元数据。 与同一订阅中的任何角色关联的配置数据指定 应该对角色可用的证书。在VM上实例化角色时, FC检索相应的证书,解密PKCS12 blob,使用FA重新加密它 公共传输密钥,并将其发送到节点上的FA。节点上的FA将其发送给GA 在实例化角色的VM中,然后GA解密它并将其安装在 操作系统证书存储区,带有一个标志,指示可以使用私钥但不能使用 出口。安装后,证书和密钥的所有临时副本都将被销毁;如果 需要重新安装,证书必须由FC重新打包。
答案 1 :(得分:0)
您的服务是否以管理员权限运行?默认情况下,您的服务以完全信任的方式运行,具有有限权 要更改它,您需要在服务定义文件(.csdef)中定义。这是MSDN文档http://msdn.microsoft.com/en-us/library/windowsazure/gg557553.aspx#Runtime