2014-02-17 2 views
6

У меня есть сервлет Java, который в настоящее время работает на Tomcat 7 (Windows) и подключается к базе данных SQL Server. Теперь мне нужно зашифровать это соединение, и у меня есть открытый SSL-сертификат ключа в хранилище ключей. Но, видимо, мне нужно настроить системное свойство для «Truststore» и установить доверительное хранилище в хранилище ключей.Конфигурировать Truststore в Tomcat

Расположение хранилища ключей: C: \ SSLKeys \ appkeystore.key и из того, что я нашел, я должен установить Truststore следующим образом;

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

Но как установить эти пожалуйста? Я попробовал это в командной строке, но это не работает. Я не хочу жестко кодировать их в Java, поскольку мне нужно, чтобы они настраивались.

Могут ли они быть установлены в файле Catalina.bat в Tomcat? Если да, то где в файле поставить команду?

Заранее спасибо

Alan

ответ

11

Я думаю, что я, возможно, нашел как, или, по крайней мере один из способов сделать это. Кто-нибудь, пожалуйста, скажите мне, есть ли лучший способ обработать это. В папке 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.

AJFarroll

-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" /> 
+0

Thanks celezar. Но у меня уже есть параметр «keystoreFile», установленный в теге коннектора server.xml. Так что это не имело никакого значения. Из того, что я нашел до сих пор, мне кажется, что я должен объявить какое-то свойство системы Java для создания «Truststore» с помощью команды типа Djavax.net.ssl.trustStore = «C: \ SSLKeys \ appkeystore.key», но есть нет точного руководства о том, как это сделать. Я попробовал это в командной строке, но это не сработало. – AJF

7

Incase кто-то другой, имеющий этот вопрос, вот что я сделал:
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" 

Это по существу сказать коту использовать указанные доверенные сертификаты, вместо стандартного 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"/> 

Попробуйте, надеюсь, это поможет!

+2

Цели настроек ключа/доверия в 'JAVA_OPTS' и в' Connector' отличаются. – Bruno

+0

О! хорошо, я никогда не пробовал второй подход, поэтому я бы не знал об этом. Это было что-то, что я заметил, возившись с конфигурациями tomcat. Спасибо за исправление, кстати! – HeCodes

+8

В принципе, параметры доверия в «Коннекторе» предназначены для установки клиентских сертификатов, которым вы хотите доверять. Параметры 'javax.net.ssl. *' В 'JAVA_OPTS' влияют на контекст SSL по умолчанию (как правило, для соединения, сделанного из сервлетов, где они действуют как клиенты, например). – Bruno

1

Рекомендуемый ответ работает только для Tomcat развернут в Windows, я обнаружил, что ниже меня работает в 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 
Смежные вопросы