繁体   English   中英

我的应用程序如何访问在Tomcat server.xml中配置的keyStore.jks

[英]How can my application access the keyStore.jks configured in Tomcat server.xml

在conf / server.xml中,我写了以下文本:

<Connector port="8443" SSLEnabled="true" maxHttpHeaderSize="8192" 
    maxThreads="150" minSpareThreads="25" maxSpareThreads="200"
    enableLookups="false" disableUploadTimeout="true"         
    acceptCount="100" scheme="https" secure="true"
     clientAuth="false" sslProtocol="TLS"
     keystoreFile="keyStore" keystorePass="password" keystoreType="JKS"
     keyAlias="tomcat"/>

接下来,我需要在代码中使用keyStore的内容(在服务器端的servlet中)。

我尝试了这个:

 System.getProperty("javax.net.ssl.keyStore")

但是它返回keyStore的名称。

那么有什么方法可以获取keyStore的内容吗? 还是我应该对服务器进行其他配置?

(我的下一步是从keyStore提取私钥和公钥,并将其用于JWT)

我想您应该能够通过ServerFactory.getServer().findServices()[0].findConnectors()[0]org.apache.tomee.loader.TomcatHelper.getServer()获得参数值(取决于您的版本) Tomcat-请参阅此问题 ),然后像往常一样使用它们打开密钥库( KeyStore.getInstance(...).load(...) )。

但我建议您在专用配置中使用另一个keystore + key,以满足您的JWT需求,以便:

  • 您的代码与Tomcat紧密耦合(=可移植性)
  • 您的运营商无需关心您的应用程序的特定需求(和/或不愿意更新其所有tomcat服务器上使用的标准SSL密钥库)
  • 您没有使用相同的密钥进行加密(SSL)和授权(JWT)。 使攻击者的生活更艰难总是一件好事。

如果您的应用程序中没有配置文件,并且不想添加一个配置文件,那么您可以简单地期望定义一个带有密钥库路径的系统属性。 例如,在命令行上使用-Djwt.keystore=<keystore location>启动Tomcat。

暂无
暂无

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

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