Действия по настройке SSL на Tomcat и настройке автоматического перенаправления с HTTP на HTTPS
Secured Socket Layer (SSL) — это криптографический протокол для обеспечения безопасности сообщений в Интернете. Он работает на основе закрытых и открытых ключей, а сообщения шифруются перед отправкой по сети. Чтобы настроить SSL на Tomcat, нам нужен цифровой сертификат, который можно создать с помощью Java keytool для среды разработки. Для производственной среды вы должны получить цифровой сертификат от поставщиков SSL-сертификатов, например, Verisign, Entrust, Lets Encrypt.
Создание SSL-сертификата
Выполните следующие шаги, чтобы создать собственный цифровой сертификат.
$ keytool -genkey -alias tomcat -keyalg RSA -keystore mycertificate.cert
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: Pankaj Kumar
What is the name of your organizational unit?
[Unknown]: Dev
What is the name of your organization?
[Unknown]: JournalDev
What is the name of your City or Locality?
[Unknown]: Bangalore
What is the name of your State or Province?
[Unknown]: Karnataka
What is the two-letter country code for this unit?
[Unknown]: IN
Is CN=Pankaj Kumar, OU=Dev, O=JournalDev, L=Bangalore, ST=Karnataka, C=IN correct?
[no]: Yes
Enter key password for <tomcat>
(RETURN if same as keystore password):
Re-enter new password:
$ ls
mycertificate.cert
Я использовал пароль «changeit» для хранилища ключей и ключа, но вы можете использовать все, что захотите. Теперь наш цифровой сертификат готов, и следующим шагом будет включение порта связи HTTPS в Tomcat и настройка его на использование нашего цифрового сертификата для предоставления SSL. поддерживать.
Томкэт HTTPS
Чтобы включить SSL, откройте файл ~Tomcat_Installation/conf/server.xml
и раскомментируйте следующую строку:
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
keystoreFile="/Users/Pankaj/tomcat/conf/mycertificate.cert"
clientAuth="false" sslProtocol="TLS" />
Tomcat перенаправляет HTTP на HTTPS
Таким образом, мы можем получить доступ к любому веб-приложению как через порты HTTP, так и через HTTPS. Мы можем настроить tomcat для перенаправления всех HTTP-запросов на HTTPS-порт с некоторыми настройками.
-
In
~TomcatInstallation/conf/server.xml
For HTTP Connector, set the redirect port to the HTTPS connector port. It will look somewhat like this:<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8090" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> </pre> </li> <li>In ~TomcatInstallation/conf/web.xml Add below configuration but make sure to add it after all the servlet-mapping tags. <pre> <!-- added by Pankaj for automatic redirect from HTTP to HTTPS --> <security-constraint> <web-resource-collection> <web-resource-name>Entire Application</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
Перезапустите tomcat сейчас, и все HTTP-запросы будут автоматически перенаправлены на HTTPS, например https://localhost:8443/axis2. Примечание. Если вы не хотите указывать порты в URL-адресах, используйте 80 для HTTP и 443 для HTTPS. В этом случае вы можете пропустить первый шаг для автоматического перенаправления HTTP-запросов на HTTPS, потому что он автоматически выберет порт по умолчанию 443. Обновление: если вы работаете с Tomcat, вам могут быть интересны следующие сообщения.
- Руководство по веб-приложениям Java
- Учебное пособие по сервлетам Java