Поиск по сайту:

Действия по настройке 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-порт с некоторыми настройками.

  1. In ~TomcatInstallation/conf/server.xmlFor 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