我当前在 Tomcat 7 (Windows) 上运行一个 Java servlet,它连接到 SQL Server 数据库。我现在需要加密此连接,并且我在密钥库中有一个公钥 SSL 证书。但显然我必须为“信任库”配置系统属性并将信任库设置为密钥库。 密钥库位置是 C:\SSLKeys ppkeystore.key,根据我的发现,我必须使用以下内容设置信任库;
Djavax.net.ssl.trustStore=C:\SSLKeys\appkeystore.key
Djavax.net.ssl.trustStorePassword=appkeystorePassword
但是我该如何设置这些呢?我已经在命令行中尝试过,但似乎不起作用。我不想在 Java 中对它们进行硬编码,因为我需要它们是可配置的。
这些可以在Tomcat的
Catalina.bat
文件中设置吗?如果是这样,我应该将命令放在文件中的哪个位置?
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 选项卡。
中的omcat目录
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 使用指定的信任库,而不是默认的cacerts
信任库,如果 Tomcat 找不到系统属性中指定的任何信任库,则会加载该信任库。 此外,我注意到可以在 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"/>
尝试一下,希望有帮助!
服务器: 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
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"
/>