1

从 Azure / Windows 方面...

当您按照http://msdn.microsoft.com/en-us/library/windowsazure/ff795779.aspx#upload中的步骤操作时,ServiceConfiguration.Cloud.cscfg 包含例如

<Certificates>
  <Certificate name="www.myserver.com" 
    thumbprint="ad513653e4560fe4afce5bdac88c744fbcf93525" 
    thumbprintAlgorithm="sha1"/>
</Certificates>

和 ServiceDefinition.build.csdef 包含,例如

<Endpoints>
  <InputEndpoint name="HttpIn" port="80" protocol="tcp" />
  <InputEndpoint name="HttpsIn" protocol="tcp" port="443"/>
</Endpoints>
<Certificates>
  <Certificate name="www.myserver.com" 
    thumbprint="AD513653E4560FE4AFCE5BDAC88C744FBCF93525" 
    thumbprintAlgorithm="sha1" />
</Certificates>

并且带有此指纹的证书通过 Azure 平台 Web 控制台上传到我们的托管服务,然后在 Azure 实例启动时将证书部署到 IIS 中的服务器证书。我们可以 RDP 进入实例并在 IIS 控制台的 Server Certificates 中查看证书。

从Java方面...

当您使用 Java 连接到“Windows-MY”密钥库时

KeyStore keystore = KeyStore.getInstance("Windows-MY");
keystore.load(null, null);

然后寻找可用的密钥库,你看不到这个证书。如果我们 RDP 进入 Azure 实例并通过 certmgr.msc 手动添加证书,那么我们的 Java 进程确实会看到使用“Windows-MY”密钥库的证书。

我看到了许多 Java / Azure 证书集成的示例 - 例如http://blogs.msdn.com/b/avkashchauhan/archive/2010/11/07/adding-ssl-https-security-with-tomcat-java-solution- in-windows-azure.aspx - 证书被导出到密钥库文件,然后与 azure 包一起部署,但我们希望找到一种方法,可以独立于包构建并使用标准 Azure 来管理证书证书管理方法。请注意,我们无权访问要使用的证书,因为它是由另一方管理的。

我还看到了如何使用 .net 代码获取此证书的示例 - 例如,如何在 Windows Azure 上的代码中获取证书

您将如何直接从 Java 访问此 Azure 部署的证书?它是否部署到“Windows-MY”以外的另一个密钥库中?您可以直接从 Java 访问 IIS 中的服务器证书中的证书吗?

谢谢,

更新(5 月 20 日)

我们从某人那里得到了使用 ServiceDefinition.csdef 文件中的 storeLocation="CurrentUser" 的提示,这听起来应该可以完成这项工作,例如

<Certificate name="www.myserver.com" 
  storeLocation="CurrentUser" storeName="My" />

但是由于某种原因,Azure 似乎没有将证书部署到 CurrentUser 存储。如果 storeLocation 设置为 LocalMachine (如上所述),我只会看到部署到服务器的证书,这最终会出现在 Java 似乎无法访问的本地机器证书存储中

4

2 回答 2

1

根据这篇文章,只有 Windows-MY 和 Windows-ROOT 作为 Windows 可能的证书存储提供程序。Azure 管理的证书存储在本地计算机的个人证书中,因此似乎无法通过 Keystore API 访问。

作为一种解决方法,您可以尝试通过本机 api(例如,通过 JNI 或jna)获取证书,或者编写一个包装可执行文件(例如,用本机 c++ 或 .net 编写),为您的 java 进程提供所需的证书。

于 2012-05-17T09:28:25.683 回答
0

您可以执行以下操作:

Java 从 Windows 密钥库访问中间 CA?

在那里,他们正在使用来自其他商店的证书构建证书链。因此,使用它,我认为您将能够访问证书。

于 2012-05-17T13:55:00.657 回答