在 Tomcat 中配置信任库

2022-09-03 03:54:04

我有一个Java servlet当前在Tomcat 7(Windows)上运行,它连接到SQL Server数据库。我现在需要加密此连接,并且我在密钥库中有一个公钥 SSL 证书。但显然,我必须为“信任库”配置一个系统属性,并将信任库设置为密钥库。

密钥库位置是C:\SSLKeys\appkeystore.key根据我发现的,我必须使用以下设置信任库;

Djavax.net.ssl.trustStore=C:\SSLKeys\appkeystore.key
Djavax.net.ssl.trustStorePassword=appkeystorePassword

但是我该如何设置这些呢?我已经在命令行中尝试过,但这似乎不起作用。我不想在Java中硬编码这些,因为我需要它们是可配置的。

这些可以在Tomcat的文件中设置吗?如果是这样,我应该将命令放在文件中的哪个位置?Catalina.bat


答案 1

我想我可能已经找到了方法,或者至少找到了一种方法。有人请告诉我是否有更好的方法来处理这个问题。在Tomcat\bin文件夹中,catalina.bat文件所在的位置,我创建了一个setenv.bat文件,并在其中声明了两个Java选项属性;

set JAVA_OPTS="-Djavax.net.ssl.trustStore=C:\path\to\keystore.key" "-Djavax.net.ssl.trustStorePassword=************"

显然,当Tomcat启动时,它会启动catalina.bat文件,catalina.bat文件确定是否存在setenv.bat文件,如果是这样,则运行此文件以设置Java选项。

如果我错了,请再次有人纠正我,并建议任何更好的方法来做到这一点。虽然显然将Tomcat设置为Windows服务,但上面的选项是通过tomcatXw输入的.exe启动Tomcat控制台并选择Java选项卡。


答案 2

如果其他人有这个问题,以下是我所做的:
1.导航到\tomcatDirectory\bin\
2。根据您的计算机编辑 catalina.sh/bat。
3. 将这些属性添加到JAVA_OPTS属性

JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=$CATALINA_HOME/certificates/truststore.ks -Djavax.net.ssl.trustStorePassword=truststorePassword -server"

这实质上会告诉 tomcat 使用指定的信任库,而不是 tomcat 加载的缺省 cacerts 信任库,如果它没有找到系统属性中指定的任何信任库。

另外,我注意到可以在tomcat的主配置文件服务器中定义信任库.xml。您所要做的就是在连接器属性中设置这些属性。

<Connector port="8443" maxThreads="500"
           server="Apache"
           scheme="https" secure="true" SSLEnabled="true" acceptCount="500"
           keystoreFile="/apps/content/certificates/keystore.ks" keystorePass="keystorepass"
           truststoreFile="/apps/content/certificates/truststore.ks" truststorePass="truststorePassword"/>

试试吧,希望它有帮助!