Пошаговое руководство по правильному включению HTTPS или SSL на сервере Apache Tomcat — порт 8443
Опубликовано: 2021-04-03Прошло почти 12 лет, как я начал использовать Apache Tomcat. Я считаю, что когда я делал свой первый проект для младшего школьного возраста, это было на Tomcat версии 1.x
Сейчас уже на версии 8.0
. В основном я общался с сервером Tomcat в своей повседневной работе, просто не могу жить без него.
На Crunchify мы уже опубликовали почти 40 статей об Apache Tomcat
. В большей части руководства я запускал сервер на порту 8080, который является портом по умолчанию, настроенным в файле server.xml
.
В этом руководстве мы подробно рассмотрим все этапы how to enable HTTPS/SSL on Apache Tomcat Server
.
Давайте начнем:
Шаг 1. Создать хранилище ключей
keytool
: мы сгенерируем безопасный ключ с помощью команды keytool
— инструмента управления ключами и сертификатами.
Команда:
1 2 3 4 |
bash - 3.2 $ pwd / Users / Shared bash - 3.2 $ keytool - genkey - alias crunchify - keyalg RSA - keystore / Users / Shared / crunchify . keystore |
Файл будет создан в папке /Users/Shared
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
bash - 3.2 $ keytool - genkey - alias crunchify - keyalg RSA - keystore / Users / Shared / crunchify . keystore Enter keystore password : Re - enter new password : What is your first and last name ? [ Unknown ] : App Shah What is the name of your organizational unit ? [ Unknown ] : Crunchify , LLC What is the name of your organization ? [ Unknown ] : Crunchify What is the name of your City or Locality ? [ Unknown ] : New York City What is the name of your State or Province ? [ Unknown ] : NY What is the two - letter country code for this unit ? [ Unknown ] : US Is CN = App Shah , OU = "Crunchify, LLC" , O = Crunchify , L = New York City , ST = NY , C = US correct ? [ no ] : yes Generating 2 , 048 bit RSA key pair and self - signed certificate ( SHA256withRSA ) with a validity of 90 days for : CN = App Shah , OU = "Crunchify, LLC" , O = Crunchify , L = New York City , ST = NY , C = US |
Я использую Mac OS X, поэтому замените свой путь соответствующим образом, если вы работаете в Windows. Я использовал пароль 123456
.
Шаг 2. Создать запрос на подпись самоподписанного сертификата
1 2 |
bash - 3.2 $ keytool - certreq - keyalg RSA - alias crunchify - file crunchify . csr - keystore crunchify . keystore Enter keystore password : |
Введите пароль: 123456
Шаг 3. Давайте сначала проверим, что tomcat работает на порту 8080 через HTTP.
Start
сервер Tomcat с помощью команды: <tomcat_home> startup.sh
.
Убедитесь, что вы находитесь в правильном месте пути tomcat.
1 2 3 4 5 6 7 8 9 10 11 |
bash - 3.2 # pwd / Users / Shared / apache - tomcat - 9.0.30 / bin bash - 3.2 $ . / startup . sh Using CATALINA_BASE : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_HOME : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_TMPDIR : / Users / Shared / apache - tomcat - 9.0.30 / temp Using JRE_HOME : / Library / Java / JavaVirtualMachines / jdk - 13.0.1.jdk / Contents / Home Using CLASSPATH : / Users / Shared / apache - tomcat - 9.0.30 / bin / bootstrap . jar : / Users / Shared / apache - tomcat - 9.0.30 / bin / tomcat - juli . jar Tomcat started . |
Нажмите URL-адрес: http://localhost:8080
, чтобы убедиться, что сервер запущен и работает.
Шаг-4. Теперь проверьте экземпляр tomcat на порту 8443 через HTTPS.
- Теперь проверьте порт 8443 (URL-адрес HTTPS/SSL).
- URL-адрес обращения:
https://localhost:8443
- Вы должны увидеть сообщение об ошибке. Страница вообще не должна загружаться.
Шаг-5. Обновить файл /conf/server.xml
Поскольку мы сгенерировали хранилище ключей и запрос на подпись сертификата выше, нам нужно указать tomcat использовать это.
- Откройте файл
server.xml
, расположенный в<tomcat_home>/conf/
, и измените настройки. - В нашем случае это папка
/Users/Shared/apache-tomcat-9.0.30/conf
.
Добавьте раздел ниже непосредственно в файл server.xml:

1 2 3 4 5 |
< Connector port = "8443" protocol = "HTTP/1.1" SSLEnabled = "true" maxThreads = "150" scheme = "https" secure = "true" keystoreFile = "/Users/Shared/crunchify.keystore" keystorePass = "123456" clientAuth = "false" sslProtocol = "TLS" sslVerifyClient = "optional" sslEnabledProtocols = "TLSv1.2,TLSv1.1,SSLv2Hello" / > |
- Здесь пароль
123456
, который я использовал наStep-1
. - Протокол: HTTP/1.1
Сохранить файл. Далее мы остановим и запустим сервер Tomcat.
Шаг-6. Остановите и запустите Apache Tomcat.
- bash-3.2$ /Пользователи/Общие/apache-tomcat-9.0.30/bin/shutdown.sh
- bash-3.2$ /Пользователи/Общие/apache-tomcat-9.0.30/bin/startup.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
bash - 3.2 $ / Users / Shared / apache - tomcat - 9.0.30 / bin / shutdown . sh Using CATALINA_BASE : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_HOME : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_TMPDIR : / Users / Shared / apache - tomcat - 9.0.30 / temp Using JRE_HOME : / Library / Java / JavaVirtualMachines / jdk - 13.0.1.jdk / Contents / Home Using CLASSPATH : / Users / Shared / apache - tomcat - 9.0.30 / bin / bootstrap . jar : / Users / Shared / apache - tomcat - 9.0.30 / bin / tomcat - juli . jar NOTE : Picked up JDK_JAVA_OPTIONS : -- add - opens = java . base / java . lang = ALL - UNNAMED -- add - opens = java . base / java . io = ALL - UNNAMED -- add - opens = java . rmi / sun . rmi . transport = ALL - UNNAMED bash - 3.2 $ / Users / Shared / apache - tomcat - 9.0.30 / bin / startup . sh Using CATALINA_BASE : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_HOME : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_TMPDIR : / Users / Shared / apache - tomcat - 9.0.30 / temp Using JRE_HOME : / Library / Java / JavaVirtualMachines / jdk - 13.0.1.jdk / Contents / Home Using CLASSPATH : / Users / Shared / apache - tomcat - 9.0.30 / bin / bootstrap . jar : / Users / Shared / apache - tomcat - 9.0.30 / bin / tomcat - juli . jar Tomcat started . |
Шаг-7. Проверьте URL-адрес и сертификацию HTTPS: https://localhost:8443.
Теперь снова нажмите безопасный URL-адрес HTTPS, чтобы убедиться, что страница успешно загружена.
Хром:
- По умолчанию
Chrome Blocks all insecure HTTPS
сайтов. - Включите
Chrome flag
для загрузки недействительных сертификатов для ресурсов, загруженных с локального хоста.
- Перейти в Chrome
- Открыть вкладку
- тип:
chrome://flags/#allow-insecure-localhost
- Включить флаг из выпадающего списка
- Перезапустите Chrome
Сафари и Мозилла Фаерфокс:
-
Accept invalid certificate error
и посетите сайт.
Вы должны увидеть загрузку страницы Apache Tomcat через HTTPS через порт 8443.
У вас все настроено. Вы заметили red padlock
? Не волнуйтесь. Мы не приобретаем SSL-сертификат у Verisign или Comodo.
В производственной среде вы можете не увидеть этот знак красного креста.
Нажмите на сертификат в браузере, и наш самоподписанный сертификат по умолчанию должен быть
valid for 90
дней.
Бонусный балл:
Как проверить cert content
с помощью команды keytool
?
1 |
bash - 3.2 # keytool -list -keystore /Users/<username>/crunchify.keystore |
Результат:
1 2 3 4 5 6 7 8 9 10 11 12 |
bash - 3.2 $ keytool - list - keystore / Users / Shared / crunchify . keystore Enter keystore password : Keystore type : PKCS12 Keystore provider : SUN Your keystore contains 1 entry crunchify , Apr 24 , 2020 , PrivateKeyEntry , Certificate fingerprint ( SHA - 256 ) : 9D : 26 : 77 : E0 : E8 : 79 : 5B : 46 : 57 : 64 : 04 : 95 : B8 : 22 : 9C : E2 : 9F : A4 : 82 : CB : 01 : B5 : 80 : 62 : 75 : 90 : 48 : 27 : 5F : 60 : CB : C8 bash - 3.2 $ |