繁体   English   中英

如何直接从Java访问Azure / IIS证书?

[英]How do you access an Azure / IIS certificate directly from Java?

从Azure / Windows方面...

当您通过http://msdn.microsoft.com/zh-cn/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控制台的服务器证书中查看证书。

从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似乎无法访问的Local Machine证书存储区中结束

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

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

您可能可以执行以下操作:

Java是否可以从Windows密钥库访问中间CA?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM