Статьи

HTTPS (SSL): в Tomcat / Jetty / Jboss

В мои ранние дни разработки, когда я видел «https: //» в своем веб-браузере, я думал, что создание одного такого соединения в моем собственном приложении было ракетостроением.
Но через несколько лет, когда я начал копать, я увидел, как все просто. Теперь, поскольку я представляю, что другие проходят через то, через что я прошел, я собираюсь поделиться основами SSL и его конфигураций при доступе к серверу.

Когда вы начинаете реализацию HTTPS, первый вопрос обычно таков:

Что нам нужно сделать в нашем приложении для поддержки «Https»?

Ну, во-первых, нам не нужно ничего менять в нашем приложении для поддержки «HTTPS». Но развертываемый нами контейнер (например, сервер Tomcat или JBoss) должен поддерживать HTTPS. Т.е. нам нужно включить настройку SSL на сервере (ах).

Прежде чем обсуждать конфигурацию на серверах, давайте рассмотрим основы SSL.

Ежедневный пример поможет. Когда мы входим в офис, мы должны провести карты доступа, чтобы открыть дверь. Представьте, что карта доступа является сертификатом (для шифрования), обеспечивающим безопасную связь между нами и нашим офисом. Вот на что похож SSL. Взгляните на приведенное ниже определение:

Secure Socket Layer: защищенная (зашифрованная) связь между веб-браузерами и веб-серверами.

Теперь взгляните на картинку ниже. Это показывает основную идею о SSL.

Связь SSL

Итак, давайте настроим SSl. Для работы SSL нам нужен сертификат. Сертификат может быть сгенерирован чем-то, называемым «keytool», встроенным инструментом Java.

Для Windows:% JAVA_HOME% \ bin \ keytool -genkey -alias tomcat -keyalg RSA.        

Для Unix: $ JAVA_HOME / bin / keytool -genkey -alias tomcat -keyalg RSA.

При выполнении этих команд будет отображаться следующая информация.

 Генерация сертификатов

 

Расположение сертификата по умолчанию — ваш домашний каталог. Если вы хотите изменить его, измените путь, введя «-keystore / path / to / my / keystore».

Кот :

Теперь последний шаг — настроить наш Tomcat с сертификатом для SSL. Раскомментируйте следующие строки в «% TOMCAT_HOME / conf / server.xml.»

 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />

Вышеприведенная строка содержит SSL по умолчанию, использующий JSSE с путем хранилища ключей в качестве нашего «домашнего пути» и нашим паролем как «changeit». Если мы сгенерировали сертификат, используя какой-то другой путь или пароль, мы должны изменить вышеприведенную строку на показанную здесь:

 

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" keystoreFile="${custompath}/.keystore" keystorePass="123456"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />

Теперь запустите Tomcat и попробуйте получить доступ к «https: // localhost: 8443 /» в порту «8443» (мы можем изменить это позже). Наша конфигурация SSL завершена. Теперь мы можем поместить наше приложение Helloworld и получить к нему доступ через «Https: //.»

Jetty:

Мы можем сгенерировать сертификат с псевдонимом «jetty», а затем настроить его для Jetty, добавив следующую конфигурацию в «$ {jetty_home} /etc/jetty.xml».

<!-- Add this connector code in jetty.xml -->
 <Call name="addConnector">
    <Arg>
      <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
        <Arg><Ref id="sslContextFactory" /></Arg>
        <Set name="Port">8443</Set>
        <Set name="maxIdleTime">30000</Set>
        <Set name="Acceptors">2</Set>
        <Set name="AcceptQueueSize">100</Set>
      </New>
    </Arg>
  </Call> <!-- Passwords and keystore location we are specifying --> <New id="sslContextFactory" class="org.eclipse.jetty.http.ssl.SslContextFactory"> <Set name="KeyStore">/home/karthikeyan/.keystore</Set> <Set name="KeyStorePassword">123456</Set> <Set name="KeyManagerPassword">123456</Set> <Set name="TrustStore">/home/karthikeyan/.keystore</Set> <Set name="TrustStorePassword">123456</Set> </New>

 

Затем запустите сервер Jetty и попробуйте «https: // localhost: 8443 /».

JBoss:

для настройки SSL в JBoss он такой же, как Tomcat. Просто измените «$ {Path} /jboss-4.2.2.GA/server/default/deploy/jboss-web.deployer/server.xml», раскомментировав строку и добавив keystorepath & keystorepass следующим образом:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" keystoreFile="${custompath}/.keystore" keystorePass="123456"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />

Запустите JBoss и получите доступ к нему в HTTPS: //.

Теперь точно так же мы можем получить доступ к нашему приложению с помощью «HTTP», а также «HTTPS».