JAVA EE: Розробка web-додатки. SSL. Keytool. HTTPS.
SSL і TLS це криптографічні протоколи забезпечують встановлення безпечного / зашифрованого з'єднання між клієнтом і сервером. Для передачі повідомлень використовується асиметричні алгоритми з відкритим ключем.
Дивлячись на наш додаток, явно кидається очі необхідність захисту приватної зони, саме до неї ми і настроєм в кінці статті захищене з'єднання.
Для реалізації прикладу, Вам може знадобитися знімок минулого уроку, забрати можна звідси.
Створення SSL сертифікату. Користування програмою keytool.
Рішення даного завдання має наступні етапи:
- Генерація приватних ключів.
- Створення файлу запиту сертифікації (.csr)
- Відсилання файлу в сервіс сертифікації.
- Отримання і імпорт підписаного сертифіката.
- Налаштування сервера.
У даній статті буде описуватися використання утиліти під Ubuntu 12.04.
- Перейдіть в папку конфігурації домену Glassfish (
Ми заверніші перший етап нашої задачі. Тепер необхідно створити файл запит сертифікації командою:
Саме цей запит нам потрібно буде відправити в цент сертифікації. А перейдемо на сайт COMODO і спробуємо підписати наш сертифікат.
У COMODO Free SSL сертифікат можна отримати на 90 днів. Прямо так атракціон небаченої щедрості. Тріал сертифікати надають майже всі центри сертифікації, у кожного свій термін (у thawte 20 днів). При бажанні з використанням тільки тріал сертифікатів від різних центрів, можна протриматися цілий рік не роздаровуючи по 200-300 $ за підпис сертифіката.
На першому кроці від Вас буде потрібно ввести ваш код запиту і вибрати сервер який Ви використовуєте. Для нас це Java Web Server.
Так само можна прибрати галочки зі всіляких підписок.
На подальших кроках від Вас попросять деякі особисті дані та дані організації.
Далі, якщо ви вказали в якості перевірки домену - лист на одних з наданих ящиків, то Вам прийде на пошту код валідації. Його потрібно буде ввести в наданій посиланням.
У разі успіху, на поштову скриньку який Ви вказали в даних про Вас, прийде лист з архівом в якому буде аж 5 сертифікатів.
Root CA Certificate - AddTrustExternalCARoot.crt
Intermediate CA Certificate - UTNAddTrustSGCCA.crt
Intermediate CA Certificate - ComodoUTNSGCCA.crt
Intermediate CA Certificate - EssentialSSLCA_2.crt
Your Free SSL Certificate - www_youdomain_ru.crt
Всі 5 сертифікатів нам потрібно буде імпортувати в наше сховище.
Скопіюйте всі сертифікати в папку конфігурації нашого домену.
При імпорті сертифікатів важливо дотримуватися чергу. Для того що б не помилитися в ній, можна глянути FAQ на сторінці COMODO.
Я його вже глянув і тому швидко проведу Вас з імпорту. Послідовно виконайте наступні команди:
Готово! Наш новенький, завірений нотаріусом підписаний сертифікат імпортовано в сховище і готовий пропонувати всім свій публічний ключ для установки захищеного з'єднання.
Налаштування сервера Glassfish на використання нового сертифікату
Після того як наш новий сертифікат був успішно імпортовано, нам необхідно перейти в консоль адміністрування сервера (localhost: 4848).
В консолі адміністрування пройдіть по наступному шляху дерева налаштувань: Configuration-> Network Config-> Network Listeners.
Тут представлені наявні слухачі мережі. Слухач admin-listener. як зрозуміло з назви, відповідає за консоль адміністрування. Слухач http-listener-1 відповідає за простій, що не зашифровані, потік мережі, відповідно http-listener-2 це захищені потік мережі.
Безумовно, Ви можете самі створювати нові слухачі, призначати їм порти, потоки та інші настройки. В даному прикладі, ми скористаємося наявними слухачем http-listener-2 для встановлення захищеного з'єднання на порту 8181. Виберіть цей слухач.
На основній вкладці міститься інформація про те чи включений слухач, чи здійснюється захист з'єднання, який порт слухається а так само який потік використовується. Тут нам лише потрібно переконатися що включена опція Security. Дотримуйтесь на вкладку SSL.
Тут у нас теж не багато роботи:
В обов'язковому порядку необхідно перезапустити сервер.
Налаштування private зони сайту на захищене з'єднання
Для цього нам потрібно додати всі один рядок!
Відкрийте наш private-controller сервлет. Замініть анотацію @ServletSecurity на наступну:
По суті ми додали ще одну опцію, говоряще що необхідно використовувати захищений транспортний протокол.
Можете пройти в нашу private зону сайту і переконатися що тепер він використовує протокол https.
Сьогодні ми познайомилися з ще одним методом для створення безпечного додатки JavaEE. Були пройдені всі етапи, від генерації приватних ключів, до імпорту підписаних сертифікатів. Ми навчилися налаштовувати наш веб-сервер на роботу з використанням нових сертифікатів, а так же вказали в нашому веб додаток область в якій повинно використовуватися захищене з'єднання.