我有一个Java servlet当前运行在Tomcat 7(Windows)上,它连接到SQL Server数据库。我现在需要加密这个连接,我在密钥库中有一个公钥SSL证书。但显然我必须为 “Truststore” 配置一个系统属性,并将信任库设置为密钥库。
keystore的位置是C:\SSLKeys\appkeystore.key,根据我的发现,我必须使用以下内容设置Truststore;
Djavax.net.ssl.trustStore=C:\SSLKeys\appkeystore.key
Djavax.net.ssl.trustStorePassword=appkeystorePassword
但是我该怎么设置这些呢?我在命令行中尝试过,但似乎不起作用。我不想在Java中硬编码这些,因为我需要它们是可配置的。
这些可以在Tomcat的Catalina.bat
文件中设置吗?如果是这样,我把命令放在文件的什么地方?
5条答案
按热度按时间1mrurvl11#
我想我可能找到了方法,或者至少找到了一种方法。请告诉我是否有更好的方法来处理这个问题。在catalina.bat文件所在的Tomcat\bin文件夹中,我创建了一个setenv.bat文件,并在其中声明了以下两个Java选项属性:
显然,当Tomcat启动时,它会初始化catalina.bat文件,catalina.bat文件会确定setenv.bat文件是否存在,如果存在,则运行该文件以设置Java选项。
再次有人请纠正我,如果我错了,并建议任何更好的方式这样做。虽然很明显,Tomcat是作为Windows服务设置的,但上面的选项是通过tomcatXw.exe输入的,以启动Tomcat控制台,并选择Java选项卡。
jyztefdp2#
如果其他人也有这个问题,这是我做的:
1.导航到\tomcatDirectory\bin
2.根据您的机器编辑catalina.sh/bat。
3.将这些属性添加到JAVA_OPTS属性
这实际上会告诉tomcat使用指定的信任库,而不是默认的cacc信任库,如果tomcat没有找到系统属性中指定的任何信任库,它将加载默认的信任库。
另外,我注意到可以在tomcat的主配置文件server.xml中定义信任库。您所要做的就是在 connector 属性中设置这些属性。
试试吧,希望有帮助!
ffvjumwh3#
推荐的答案只适用于部署在Windows上的Tomcat,我发现下面的答案在Linux服务器上也适用:
TOMDOGEDIRECTORY/bin/setenv.sh[* 您需要自己创建此文件 *]
b5buobof4#
您需要为此更改
server.xml
文件。您可以在conf/
目录中找到它。首先取消注解这些行:
然后把它改成这样
xuo3flqw5#
对于tomcat9,可以在server.xml中添加信任库,如下所示
注意:clientAuth必须设置为true
对于tomcat10及以上版本,可以按如下方式添加
第一步:在server.xml中添加密钥库,如下所示
步骤2:然后在setenv.sh中添加信任存储,如下所示
在Tomcat日志中,可以发现信任存储区的加载方式如下