Покроковий посібник із налаштування сертифіката 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 Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: bloggerflare.com What is the name of your organizational unit? [Unknown]: Blogging What is the name of your organization? [Unknown]: Geek Flare What is the name of your City or Locality? [Unknown]: What is the name of your State or Province? [Unknown]: What is the two-letter country code for this unit? [Unknown]: Is CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Unknown, ST=Unknown, C=Unknown correct? [no]: yes Enter key password for <bloggerflare> (RETURN if same as keystore password): [[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-адресу, щоб почати тест
І це ЗЕЛЕНИЙ – рейтинг.
Однак завжди корисно прокрутити звіт униз і перевірити, чи знайдете ви якусь вразливість, і виправити її.
Ось і все на сьогодні.
Сподіваюся, це допоможе вам дізнатися про процедуру захисту Tomcat за допомогою сертифіката SSL/TLS. Якщо вам цікаво дізнатися більше, я настійно рекомендую це курс.