繁体   English   中英

在Tomcat中配置信任库

[英]Configure Truststore in Tomcat

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

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

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

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

可以在Tomcat的Catalina.bat文件中进行设置吗? 如果是这样,我将命令放在文件中的什么位置?

我想我可能已经找到了方法,或者至少是一种方法。 有人请告诉我是否有更好的处理方法。 在cat \\ catalina.bat文件所在的Tomcat \\ bin文件夹中,我创建了一个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.导航到\\ 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的主要配置文件server.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"/>

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

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

TOMDOGEDIRECTORY /斌/ 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

您需要为此更改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" />

暂无
暂无

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

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