Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

пятница, 9 июля 2010 г.

Подключение SSL к Томкату

Допустим, что нам в веб-приложении нужно иметь несколько URL, которые доступны только по HTTPS. Это может быть работа с любыми чувствительными данными: платежи, почта, и т. п. В основном, это, конечно, финансовые данные. Вот об этом и будет рассказано в этом посте.

По мотивам Setting Up SSL on Tomcat In 3 Easy Steps

Нужно сделать следующее:

  1. Сгенерировать ключ

  2. Настроить Tomcat для использования этого ключа

  3. Настроить веб-приложение на работу по HTTPS

Генерация ключа



Используем утилиту keytool:

keytool -genkey -alias jdevnotes -keypass jdevpasswd -keystore jdevnotes.keystore.bin -storepass jdevpasswd

Эта команда генерирует ключ с алиасом jdevnotes, который сохраняется в файл (keystore, хранилище ключей) jdevnotes.keystore.bin. Также задается пароль на ключ и на хранилище в целом (пароли одинаковые - jdevpasswd).

Немножко подробнее о ключах: Все ключи хранятся в хранилище ключей (файл jdevnotes.keystore.bin). Каждое хранилище может содержать множество ключей. Доступ к ключу осуществляется по алиасу. Алиасы - регистро-независимые, т.е. алиас john и JoHn - один и тот же алиас с точки зрения хранилища ключей.

При создании ключа задается также следующая информация:

What is your first and last name?
What is the name of your organizational unit?
What is the name of your organization?
What is the name of your City or Locality?
What is the name of your State or Province?
What is the two-letter country code for this unit?


Здесь вводится информация о том, кто ты такой и где находишься.

Настройка Tomcat для использования ключа



Перемещаем файлик с ключом в каталог $CATALINA_HOME/webapps. После этого редактируем файлик $CATALINA_HOME/conf/server.xml. В этом файле раскомментируем коннектор на 8443 порту, добавим ссылку на файл с ключами и пароль для хранилища, получим:

<Connector port=”8443″
maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
enableLookups=”true” disableUploadTimeout=”true”
acceptCount=”100″ debug=”0″ scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS”
keystoreFile=”/webapps/jdevnotes.keystore.bin”
keystorePass=”jdevpasswd” />


Теперь зайдите по адресу

https://localhost:8443

мы зашли на менеджер Томката по HTTPS. Теперь, любое приложение, которое развернуто на Томкате, может быть доступно как по HTTP, так и по HTTPS. Теперь рассмотрим, как сделать так, чтобы некоторые урлы были доступны только через HTTPS.

Настройка веб-приложения на работу только по HTTPS



Откроем файлик web.xml нашего приложения и добавим туда следующий код (код нужно помещать в самом конце контейнера web-app):

<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/billing/fullBalanceHistory</url-pattern>
<url-pattern>/mail/inbox</url-pattern>
<url-pattern>/somethingelse/*</url-pattern>
</web-resource-collection>
 
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>


Следующие ссылки будут доступны только по HTTPS:
/billing/fullBalanceHistory
/mail/inbox
/somethingelse/*

Если мы хотим, чтобы все приложение было доступно по HTTPS, то просто ставим паттерн /*. Если хотим вдруг выключить SSL, то для этого можно просто записать NONE в тег
<transport-guarantee>

Комментариев нет:

Отправить комментарий

Постоянные читатели