当前位置: 首页 > 知识库问答 >
问题:

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

车明贤
2023-03-14

从天蓝/窗户那边...

<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>
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上用代码获取证书。

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

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

共有1个答案

郭俊人
2023-03-14

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

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

 类似资料:
  • 我在Java中有一个Azure函数。使用托管身份和密钥库引用,我在功能应用程序中添加了一个配置来访问密钥库秘密和证书。这个秘密被正确引用,我可以在Azure函数中访问它的值。

  • 我把它和命令连接起来了 keytool-import-alias gmail-keystore C:\development\java\jdk11\lib\security\cacerts-file m gmail.com 我的计算机超载了,但错误仍然存在

  • 问题内容: 到目前为止,我们使用了几个Linux用户: system_foo @ server system_bar @服务器 … 我们希望将系统用户放入docker容器中。 linux用户->容器 服务器内部的更改没有问题,但是远程系统使用这些用户向我们发送数据。 我们需要工作。远程系统无法更改。 如果每个linux操作系统只有一个系统(将端口22传递到容器),我将非常容易。但是有几个。 我们如

  • 我有以下情况: 只能扩展的数据结构(我只能在尾部添加内容) 我需要能够跟踪我已经看到的元素(我有一个索引,理想情况下我希望能够从这个特定元素开始再次遍历列表) 我希望读取永远不会阻塞,并且添加的新元素只会锁定队列的尾部而不是整个队列 这是一个由多个线程大量修改的结构。 最佳的数据结构是什么? ArrayList.如果能够直接访问使用索引看到的最后一个元素,这将是理想的,但它会导致并发修改异常。我可

  • 问题内容: 我正在将Laravel用于Web应用程序。上传了生产过程中的所有内容,发现其中的某些文件可以通过url直接访问- 如何避免这种直接访问? 问题答案: 您使用的是错误的Web服务器配置。将您的Web服务器指向目录并重新启动它。 对于 Apache, 您可以使用以下指令: 对于 nginx ,您应该更改以下行: 完成此操作后,将不再可以从浏览器访问所有Laravel文件。

  • 问题内容: 我使用Minify来缩小并缓存所有脚本请求。 我只希望我的用户能够访问JavaScript文件的缩小版本。 Minify位于,我的脚本位于。如何阻止直接访问未缩小的JavaScript文件所在的位置。我宁愿不要将它们从文档根目录中删除,但这是一个选择。 请注意,我使用的是Zend Framework,因此应用程序的实际根目录已移至。htaccess文件可处理重写。 问题答案: 您不能仅