我有一个当前在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文件中设置吗?如果是这样,我把文件放在哪里?
答案 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" />