在Tomcat中配置Truststore

时间:2014-02-17 16:01:19

标签: java ssl tomcat7

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

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

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

但我该怎么设置这些呢?我在命令行中尝试过,但似乎没有用。我不想在Java中对它们进行硬编码,因为我需要它们是可配置的。

可以在Tomcat的Catalina.bat文件中设置吗?如果是这样,我把文件放在哪里?

4 个答案:

答案 0 :(得分:14)

我想我可能已经找到了,或者至少有一种方法可以做到这一点。有人请告诉我是否有更好的方法来处理这个问题。在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选项卡。

答案 1 :(得分:8)

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

$(document).ready()

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

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

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

尝试一下,希望它有所帮助!

答案 2 :(得分:1)

推荐的答案仅适用于Windows中部署的Tomcat,我发现以下内容适用于 Linux 服务器:

TOMDOGEDIRECTORY / bin / setenv.sh [您需要自己创建此文件]

JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=/opt/meh_tuststove.jks" 
JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStorePassword=muchsecure" 
export JAVA_OPTS

答案 3 :(得分:-1)

您需要更改server.xml文件。你可以在conf目录中找到它。

首先取消注释这些行:

<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->

然后将其更改为

Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
    disableUploadTimeout="true" enableLookups="false" maxThreads="25"
    port="8443" keystoreFile="C:\SSLKeys\appkeystore.key" keystorePass="password"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    secure="true" sslProtocol="TLS" />