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

如何直接从Java访问Azure/IIS证书?,java,iis,azure,certificate,keystore,Java,Iis,Azure,Certificate,Keystore,从Azure/Windows端 当您使用ServiceConfiguration.Cloud.cscfg执行中的步骤时 <Certificates> <Certificate name="www.myserver.com" thumbprint="ad513653e4560fe4afce5bdac88c744fbcf93525" thumbprintAlgorithm="sha1"/> </Certificates> <Endp

从Azure/Windows端

当您使用ServiceConfiguration.Cloud.cscfg执行中的步骤时

<Certificates>
  <Certificate name="www.myserver.com" 
    thumbprint="ad513653e4560fe4afce5bdac88c744fbcf93525" 
    thumbprintAlgorithm="sha1"/>
</Certificates>
<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>
然后查找可用的密钥库,您没有看到此证书。如果我们将RDP添加到Azure实例中,并通过certmgr.msc手动添加证书,那么我们的Java进程确实可以使用“Windows MY”密钥库看到证书

我看到了许多Java/Azure证书集成的示例,例如,证书导出到密钥库文件,然后与Azure包一起部署,但我们希望找到一种方法,使证书可以独立于包构建并使用标准Azure证书管理方法进行管理。请注意,我们无法访问要使用的证书,因为它是由另一方管理的

我还看到了如何使用.net代码获取此证书的示例-例如

您将如何直接从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(如上所述)时,我才能看到部署到服务器的certificate。这最终会出现在本地计算机证书存储中,Java似乎无法访问该本地计算机证书存储,因为只有Windows MY和Windows ROOT作为Windows的可能证书存储提供程序。Azure托管证书存储在本地计算机的个人证书中,因此似乎无法通过密钥库API进行访问

作为一种解决方案,您可以尝试通过原生API(例如通过JNI或)获得证书,或者编写一个可执行文件(例如,用C++或.NET编写的),它为java进程提供所需的证书。

< P>根据Windows和Windows根目录,Windows可能是证书存储提供程序。Azure托管证书存储在本地计算机的个人证书中,因此似乎无法通过密钥库API进行访问


作为一种解决方案,您可以尝试通过原生API(例如通过JNI或)获得证书,或者编写一个可执行文件(例如,用C++或.NET编写的),它为java进程提供所需的证书。

< P>您可以做如下的事情:


在这方面,他们正在用其他商店的证书构建一个证书链。因此,我认为您可以使用它访问证书。

您可以执行以下操作:


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

感谢您提供了关于该证书的指针,但是当前用户存储(即Windows MY)中没有任何证书可供枚举,我认为该答案中的技术只有在我要查找的证书位于链中时才有效。我将对这种方法进行一点试验。感谢您的指示,但是当前用户存储(即Windows MY)中没有任何要枚举的证书,我认为该答案中的技术只有在我要查找的证书在链中时才有效。我将尝试一下这种方法。
<Certificate name="www.myserver.com" 
  storeLocation="CurrentUser" storeName="My" />