Поиск по блогу

Показаны сообщения с ярлыком tomcat 7. Показать все сообщения
Показаны сообщения с ярлыком tomcat 7. Показать все сообщения

среда, 23 мая 2012 г.

Настройка SSL для приложений в tomcat


Исходные данные:
  1. ОС: Fedora 16
  2. Tomcat 7.0.27
  3. JDK 6u32 (6u31)
Последовательность действий:
  1. Установить tomcat и jdk:
  2. Рассмотрим случай, когда Tomcat по умолчанию использует порт 8080. Необходимо, чтобы файерволл разрешил выход с этого порта. Добавим правило в iptables:
    # vim /etc/sysconfig/iptables
    вписать
    -A INPUT -m state --state NEW -m udp -p udp --dport <8080> -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport <8080> -j ACCEPT
    

    #service iptables restart 
    Fedora 16:
    #systemctl restart iptables.service
  3. Проверить, что все запускается:
    /path/bin/startup.sh 
    или
    /path/bin/catalina.sh start
    http://localhost:8080
  4. Необходимо настроить SSL на установленном tomcat:
    1. остановить томкат, если запущен:
      /path/bin.shutdown.sh
      или
      /path/bin/catalina.sh stop 
    2. нужно сгенерировать
      self-signed sertificate
      и приватный ключ сервера:
      keytool -genkey -alias tomcat -keyalg RSA 
      [ -keysize 1024 -keystore /path/to/keystore/.keystore ] 
      
      keytool
      будет просить ввести пароли. Надо ввести. Можно указать дополнительные данные
      (organisation, state, name, etc)
      . И согласиться с введенными данными. Результат:
      /%username%/.keystore
      keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 
      -keystore /path/conf/.keystore 
      
      Результат: 1024-битный
      .keystore
      , расположенный в
      /path/conf/.keystore
    3. экспорт
      .keystore
      в файл сертификата
      name.cer
      :
      cd /path/conf/ 
       keytool -export -alias tomcat -file server.cer
      Вводим пароль от нашего хранилища (если мы его задавали, а лучше было бы задать) и получаем результат:
      /path/conf/server.cer 
    4. Создание key файла-приватного ключа:
      openssl genrsa -out server.key
      по умолчанию 512 бит размер ключа
      openssl genpkey -algorithm RSA -out server.key 
      -pkeyopt rsa_keygen_bits:2048
      
      Результат:
      /path/conf/server.key 
    5. Конфигурация в файле
      /path/conf/server.xml 
      :
      < !-- Define a SSL HTTP/1.1 Connector on port 8443
               This connector uses the JSSE configuration, when using APR, the
               connector should be using the OpenSSL style configuration
               described in the APR documentation -- >
      
         < Connector
                     port="8443"
                     protocol="HTTP/1.1" SSLEnabled="true"
                     maxThreads="150" scheme="https" secure="true"
                     clientAuth="false" sslProtocol="TLS"
                     SSLCertificateFile="/path/conf/server.cer"
                     SSLCertificateKeyFile="/path/conf/server.key"
                     keystoreFile="/path/conf/.keystore"
                     keystorePass="keystore_password" / >
      
    6. запустить томкат
    7. проверка:
      https://localhost:8443
  5. Взять (с сервера или попросить товарища или собрать самому) war файл свежей версии проекта
    X
    (X.war) и скопировать пока в какую-нибудь директорию, отличную от
    /path/
    , например,
    /home/%username%/
    .
  6. Остановить томкат, если еще не остановлен.
  7. cp /home/%username%/X.war /path/webapps/ 
  8. Запустить томкат. War файл сам развернется и приложение будет готово.
  9. И:
     https://localhost:8443/X/ 
    Если выдается нужная страничка, то вообще отлично.
Источники:

среда, 2 февраля 2011 г.

Настройка автозапуска tomcat7

Задача: автозапуск tomcat7 от имени специального пользователя, например tomcat. Так безопаснее и удобнее.
  1. Скачать tomcat с официального сайта http://tomcat.apache.org/. Желательно скачать tar.gz - zip предназначен для windows окружения. Установить tomcat7. Это просто распаковка. Например, в /opt. Подробнее в readme файле тарболла.
  2. В папке bin находятся скрипты запуска, останова и другие полезные. Они и будут делать всю основную работу. Необходимо написать скрипт - обертку, которая и запускает эти скрипты. 
Примерный код скрипта:


#!/bin/sh
#
# tomcat7 This shell script takes care of starting and stopping Tomcat
#
# chkconfig: - 80 20
#
### BEGIN INIT INFO
# Provides: tomcat7
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Release implementation for Servlet 3.0 and JSP 2.1
# Short-Description: start and stop tomcat
### END INIT INFO

export CATALINA_HOME=/opt/apache-tomcat-7.0.6

NAME=`basename $0`

case $1 in

start)

echo "Starting ${NAME} service: "

su - tomcat -c $CATALINA_HOME/bin/startup.sh

;;

stop)

echo "Stopping ${NAME} service: "

su - tomcat -c $CATALINA_HOME/bin/shutdown.sh

;;

restart)

echo "Restarting ${NAME} service: "

su - tomcat -c $CATALINA_HOME/bin/shutdown.sh

su - tomcat -c $CATALINA_HOME/bin/startup.sh

;;

*)


echo "Usage $0 {start|stop|restart}"

exit 1

;;

esac

exit 0


Мини-поянение: Начальные строчки с решеткой нужны для chkconfig. Далее указываем переменную CATALINA_HOME где указан путь до нашего tomcat7. NAME - здесь первый аргумент строки - получаемое имя приложения из командной строки.

3. Сохранить скрипт под говорящим именем в директории /etc/init.d/<имя>. Мой файл называется my_tomcat7.

4. Добавим скрипту права на запуск, т.е. исполнение. Например, так:
[root@machine] # chmod +x /etc/init.d/my_tomcat7
владелец файла рут, само собой.

5. Создадим (и это можно было сделать вначале) пользователя и группу под именами tomcat. Дадим им права на папку tomcat7 и сделаем их владельцами:
# sudo groupadd tomcat
# adduser tomcat
# usermod -g tomcat tomcat

[root@machine] # chown tomcat.tomcat -R /папка/с/tomcat7/

6. Добавим наш tomcat7 в chkconfig
[root@machine] # chkconfig --add /etc/init.d/my_tomcat7
Для centOS: chkconfig --add my_tomcat7
[root@machine] # chkconfig /etc/init.d/my_tomcat7 on

7. Да, и если в папке tomcat7  /webapps есть приложения, которые важны, то нужно дать права на запись группе tomcat в папку /webapps: rwxrwxr-x
chmod g+w /webapps или mc => [F9] => File => Chmod => write by group. 

8. Для проверки можно перезапустить сначала вручную сервис, а можно сразу ребутнуться и посмотреть логи:
[root@machine] # service my_tomcat7 start
[root@machine] # service my_tomcat7 stop
[root@machine] # service my_tomcat7 restart