Детальний посібник з налаштування SSL/TLS сертифіката на сервері Tomcat.
Одним із ключових аспектів забезпечення безпеки Tomcat є інтеграція SSL сертифіката, що дозволяє веб-застосунку працювати через протокол HTTPS.
Існує декілька стратегій досягнення цього.
- SSL-завершення на балансувальнику навантаження
- Впровадження SSL на рівні мережі доставки контенту (CDN)
- Використання веб-серверів, таких як Apache чи Nginx, для реалізації SSL
Проте, якщо ви не використовуєте жоден з наведених варіантів, або застосовуєте це як внутрішній інтерфейс, або вам потрібно безпосередньо розгорнути SSL в Tomcat, наступні інструкції будуть корисними.
У цій статті ми розглянемо процес, який охоплює:
- Створення CSR (запит на підпис сертифіката)
- Імпорт сертифіката у файл сховища ключів
- Активація SSL в Tomcat
- Налаштування протоколу TLS
- Перенаправлення Tomcat на прослуховування порту 443
- Перевірка Tomcat на вразливості SSL
Розпочнемо…
Підготовка до встановлення SSL/TLS сертифіката
Перший крок – це генерація CSR і його підписання у центрі сертифікації. Для управління сертифікатами ми будемо використовувати утиліту keytool.
- Авторизуйтеся на сервері Tomcat
- Перейдіть до каталогу встановлення Tomcat
- Створіть папку з назвою “ssl”
- Виконайте команду для створення сховища ключів
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks
У наведеній команді ви можете змінити дві змінні:
Наприклад:
[[email protected] ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks Введіть пароль сховища ключів: Повторіть новий пароль: Яке ваше ім'я та прізвище? [Unknown]: bloggerflare.com Яка назва вашого організаційного підрозділу? [Unknown]: Blogging Яка назва вашої організації? [Unknown]: Geek Flare Яка назва вашого міста чи місцевості? [Unknown]: Яка назва вашого штату чи провінції? [Unknown]: Який дволітерний код країни для цього підрозділу? [Unknown]: Чи вірно CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Unknown, ST=Unknown, C=Unknown? [no]: yes Введіть пароль ключа для <bloggerflare> (RETURN, якщо такий самий, як пароль сховища ключів): [[email protected] ssl]#
Зверніть увагу на запитання щодо імені та прізвища. Це не ваше ім’я, а доменне ім’я, яке потрібно захистити.
Після введення всіх даних, у поточному робочому каталозі буде створено файл сховища ключів.
Далі, з щойно створеного сховища ключів, за допомогою наступної команди створюється CSR:
keytool -certreq -alias bloggerflare -keyalg RSA -file bloggerflare.csr -keystore bloggerflare.jks
Створений CSR потрібно надіслати до центру сертифікації для підписання. Якщо ви тестуєте, ви можете скористатись безкоштовним постачальником сертифікатів, в іншому випадку оберіть платний варіант.
Після підписання сертифіката, перейдемо до його імпорту в сховище ключів, використовуючи наведені команди:
- Імпорт кореневого сертифіката, який надається постачальником
keytool -importcert -alias root -file root -keystore bloggerflare.jks
- Імпорт проміжного сертифіката
keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks
Примітка: без імпорту кореневого та проміжного сертифікатів ви не зможете імпортувати сертифікат домену в сховище ключів. Якщо у вас є кілька проміжних сертифікатів, їх потрібно імпортувати всі.
- Імпорт сертифіката домену
keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare
Ви отримаєте підтвердження успішного встановлення.
Сертифікат успішно імпортовано до сховища ключів.
Відмінно, сховище ключів сертифікатів готове. Переходимо до наступного етапу.
Якщо ви новачок у сфері SSL і бажаєте дізнатися більше, зверніть увагу на цей онлайн-курс: Операції SSL/TLS.
Активація SSL у Tomcat
Залишаючись на сервері Tomcat, перейдіть до папки “conf”.
- Зробіть резервну копію файлу server.xml
- Знайдіть секцію
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
- Не забудьте замінити ім’я файлу сховища ключів та пароль на ваші
- Перезапустіть Tomcat, і ви побачите, що Tomcat доступний через HTTPS
Чудово!
Стандартний порт HTTPS
Чому?
Зверніть увагу, що на скріншоті вище я отримую доступ до Tomcat через порт 8080, використовуючи https. Це не стандартна практика, і є декілька причин, чому це не є ідеальним варіантом:
- Ви не хочете, щоб користувачі використовували нестандартний порт
- Браузер може видавати попередження, оскільки сертифікат видано на доменне ім’я без номера порту
Тому, метою є змусити Tomcat прослуховувати порт 443, щоб він був доступний через https:// без вказання номера порту.
Для цього, відредагуйте файл server.xml за допомогою будь-якого текстового редактора:
- Знайдіть секцію
- Змініть порт з 8080 на 443
- Оновлений рядок має виглядати так:
<Connector port="443" protocol="HTTP/1.1" connectionTimeout="20000" SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS" redirectPort="8443" />
- Перезапустіть Tomcat і отримайте доступ до застосунку через https без вказання номера порту
Чудово, все працює!
Тест на вразливість SSL/TLS
Наостанок, проведемо тестування, щоб переконатися, що сервер не вразливий до онлайн-загроз.
Існує безліч онлайн-інструментів, я вже згадував деякі з них, і тут я буду використовувати SSL Labs.
- Перейдіть на сайт SSL Labs і введіть URL-адресу для початку тестування
І це ЗЕЛЕНИЙ рейтинг – A.
Однак, рекомендується прокрутити звіт вниз та перевірити, чи не знайдеться вразливостей, і виправити їх.
На цьому все на сьогодні.
Сподіваюся, ця інформація допоможе вам зрозуміти процедуру захисту Tomcat за допомогою сертифіката SSL/TLS. Якщо ви зацікавлені в отриманні додаткових знань, я настійно рекомендую вам цей курс.