在Tomcat中配置Truststore

AJF*_*AJF 9 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文件中设置吗?如果是这样,我在文件中的哪个地方放了命令?

AJF*_*AJF 16

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

set JAVA_OPTS="-Djavax.net.ssl.trustStore=C:\path\to\keystore.key" "-Djavax.net.ssl.trustStorePassword=************"
Run Code Online (Sandbox Code Playgroud)

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

如果我错了,请再纠正我,并建议任何更好的方法.尽管显然Tomcat所在设置为Windows服务上面的选项是通过tomcatXw.exe输入来启动Tomcat的控制台和Java选项卡中选择.


HeC*_*des 8

如果其他人有这个问题,这就是我所做的:
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"
Run Code Online (Sandbox Code Playgroud)

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

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

<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"/>
Run Code Online (Sandbox Code Playgroud)

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

  • 基本上,`Connector`中的truststore参数用于设置您想要信任的客户端证书.`JAVA_OPTS`中的`javax.net.ssl.*`设置会影响默认的SSL上下文(例如,通常用于从servlet内部进行的连接,例如,它们充当客户端). (8认同)
  • `JAVA_OPTS`和`Connector`中的密钥/信任库设置的目的是不同的. (3认同)
  • 不建议编辑 catalina.sh 文件。事实上,该文件甚至具体说明了如何执行此操作:“不要在此脚本 [catalina.sh] 中设置变量。相反,请将它们放入 CATALINA_BASE/bin 中的脚本 setenv.sh 中,以保持自定义设置独立。 (2认同)