我有一个当前在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选项卡中选择.
如果其他人有这个问题,这就是我所做的:
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)
尝试一下,希望它有所帮助!
| 归档时间: |
|
| 查看次数: |
58315 次 |
| 最近记录: |