Допустим, что нам в веб-приложении нужно иметь несколько URL, которые доступны только по HTTPS. Это может быть работа с любыми чувствительными данными: платежи, почта, и т. п. В основном, это, конечно, финансовые данные. Вот об этом и будет рассказано в этом посте.
По мотивам
Setting Up SSL on Tomcat In 3 Easy StepsНужно сделать следующее:
- Сгенерировать ключ
- Настроить Tomcat для использования этого ключа
- Настроить веб-приложение на работу по 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>