Запуск приложений Jira через SSL или HTTPS

Инструкции на этой странице описывают, как запускать приложения Jira через SSL или HTTPS, настроив Apache Tomcat с помощью HTTPS. Эта процедура охватывает только общие типы установки Jira. Это ни в коем случае не является окончательным или исчерпывающим руководством по настройке HTTPS и может не применяться к вашей среде.

 

Зачем вам запускать Jira через SSL или HTTPS? Когда люди получают доступ к веб-приложениям, всегда существует вероятность, что их имена пользователей и пароли могут быть перехвачены посредниками между вашим компьютером и провайдером / компанией. Рекомендуется включить доступ через HTTPS (HTTP через SSL) и сделать это необходимым для страниц, на которых отправляются пароли. Обратите внимание, однако, что использование HTTPS может привести к более низкой производительности.

Прежде чем вы начнете

Перед началом работы обратите внимание на следующее:

 

  • Поддержка

Atlassian Support будет ссылаться на поддержку SSL в Центре сертификации (CA), который выдает сертификат. Инструкции, связанные с SSL на этой странице, предоставляются только в качестве ссылки.

 

  • Установщики Windows

«Установщик Windows» устанавливает собственную платформу Java Runtime Environment (JRE) Java, которая используется для запуска Tomcat. При обновлении сертификатов SSL, пожалуйста, сделайте это в этой установке JRE.

 

  • Связанные ошибки

На Jira 7.3 и более поздние версии влияют две ошибки, которые неправильно устанавливают протокол в файле server.xml. Вы можете обойти эту проблему, установив протокол вручную.

Две ошибки, затрагивающие Jira 7.3.0 и более поздние версии:

JRASERVER-63734 - Tomcat не запускается в версии 7.3 с протоколом = "org.apache.coyote.http11.Http11Protocol" RESOLVED

JRASERVER-64082 - JIRA Configuration Tool устанавливает неправильное значение атрибута «протокол» для конфигурации Tomcat SSL RESOLVED

Обходной путь заключается в том, чтобы вручную отредактировать файл server.xml, чтобы изменить протокол на вашем HTTPS-коннекторе, чтобы:


protocol="org.apache.coyote.http11.Http11NioProtocol"

 

  • Jira за обратным прокси

Если хостинг Jira за обратным прокси-сервером, например Apache, см. Раздел Интеграция Jira с Apache с использованием SSL для получения дополнительной информации.

Создание Java KeyStore

В этом разделе вы создадите хранилище ключей Java (JKS), в котором будут храниться ваши SSL-сертификаты. SSL-сертификаты необходимы для работы SSL в Jira. В мире SSL сертификаты подразделяются на две основные категории:

Сертификат

Описание

Когда использовать

Шаги

Самозаверяющие

Это сертификаты, которые не были подписаны цифровой подписью CA, что является методом подтверждения подлинности сертификата, обслуживаемого веб-сервером. Они подписываются сами по себе, поэтому само название подписано.

Только тестовые, dev или внутренние серверы.

1-13

Подписано центром сертификации(CA)

Сертификат, имеющий идентификационную информацию, подписанную цифровой подписью центром сертификации (CA). Это позволит браузерам и клиентам доверять сертификату.

Производственные серверы.

1 - 21

 

Цифровые сертификаты, выданные доверенными сторонними центрами сертификации (Certification Authority), обеспечивают проверку того, что ваш сайт действительно представляет вашу компанию, тем самым подтверждая личность вашей компании. Многие ЦС просто проверяют имя домена и выдают сертификат. Другие ЦС, такие как VeriSign, проверяют наличие вашей компании, право собственности на ваше доменное имя и ваши полномочия на подачу заявки на сертификат, обеспечивая более высокий уровень аутентификации.

Список ЦС можно найти здесь. Некоторые из наиболее известных ЦС:

  • Verisign
  • Thawte
  • CAcert (относительно новый CA, предоставляющий бесплатные сертификаты CA)

Мы рекомендуем использовать сертификат с сертификатом CA.

  1. Загрузите и установите приложение Portecle на сервер, на котором запущена Jira.

 Это стороннее приложение и не поддерживается Atlassian.

  1. Запустите приложение как администратор, чтобы оно имело соответствующие разрешения. Кроме того, убедитесь, что переменная <JAVA_HOME> указывает на ту же версию Java, что использует Jira. См. Настройка JAVA_HOME для получения дополнительной информации об этом.

Если вы работаете на сервере Linux / UNIX, X11 необходимо будет перенаправление при подключении к серверу (так что вы можете использовать графический интерфейс), как показано ниже:


ssh -X user @ server

  1. Выберите опцию Создать новое хранилище ключей:

  1. Выберите тип JKS и ОК:

  1. Выберите кнопку «Создать ключевую пару»:

  1. Выберите алгоритм RSA и размер ключа 2048:

  1. Убедитесь, что Алгоритм подписи - «SHA1withRSA», а затем отредактируйте данные сертификата, как показано в приведенном ниже примере, и выберите OK:

Общее имя ДОЛЖНО соответствовать URL-адресу сервера, иначе ошибки будут отображаться в браузере.

Если вы хотите использовать SHA256withRSA, пожалуйста, используйте соответствующий алгоритм подписи и обратитесь к: Инструменты безопасности сообщают, что SSL-шифры по умолчанию слишком слабы.

  1. Выберите псевдоним для сертификата - например, jira.
  2. Введите пароль для KeyStore (обычно используемый пароль по умолчанию - changeit).
  3. Генерация пары ключей будет сообщаться как успешная, как показано ниже:

  1. Сохраните KeyStore в <Jira_HOME> /jira.jks, обеспечив использование того же пароля на шаге 11. Это можно сделать с помощью File> Save Keystore.
  1. Нам нужно создать запрос на подпись сертификата для центра сертификации, чтобы подписать и подтвердить личность сертификата. Для этого щелкните правой кнопкой мыши по сертификату и выберите «Создать CSR». Сохраните его в <Jira_HOME> /jira.csr.

  1. Отправьте CSR в центр сертификации для подписания. Они будут предоставлять подписанный сертификат (ответ CA) и набор корневых / промежуточных сертификатов CA.
  2. Импортируйте корневые и / или промежуточные сертификаты CA с помощью Import Trusted Certificate, повторяя этот шаг для каждого сертификата.

  1. Импортируйте подписанный сертификат, щелкнув правой кнопкой мыши на сертификате jira и выбрав ответ импорта центра сертификатов (Import CA Reply):

  1. Выберите сертификат, предоставленный CA, который должен быть jira.crt. Это ответит успешным ответом CA Reply Import.
  2. Проверьте это, выбрав «Инструменты»> «Отчет о хранилище ключей». Он должен отображать сертификат как дочерний элемент корневых сертификатов.
  3. Сохраните хранилище ключей и перейдите к следующему разделу.

 

Настройка вашего веб-сервера с помощью инструмента конфигурации Jira

В этом разделе вы закончите настройку SSL-шифрования для Jira, настроив свой веб-сервер с помощью инструмента конфигурации Jira. Для получения дополнительной информации о инструменте конфигурации Jira см. Раздел Использование инструмента конфигурации Jira.

  1. Запустите инструмент настройки Jira, как показано ниже:
  • Windows: откройте командную строку и запустите config.bat в подкаталоге bin каталога установки Jira.
  • Linux / Unix: откройте консоль и запустите config.sh в подкаталоге bin установочного каталога Jira.

Это может завершиться ошибкой, как описано в нашем «Невозможном запуске приложения конфигурации приложений Jira» из-за отсутствия X11 DISPLAY переменной была установлена ошибка.

 KB статья. Пожалуйста, обратитесь к ней для обходного пути.

  1. Перейдите на вкладку Веб-сервер.

Скриншот: инструмент настройки Jira - вкладка «Веб-сервер»

  1. Заполните поля следующим образом:

Поле

Значения

Порт управления

Оставьте как значение по умолчанию. Вы можете изменить номер порта, если хотите. См. Раздел Изменение TCP-портов Jira.

 

Профиль представляет собой предварительно настроенную конфигурацию веб-сервера. Вы можете выбрать из четырех следующих значений:

·         Отключено

·         Только HTTP

·         HTTP и HTTPS (перенаправление HTTP на HTTPS)

·         Только HTTPS

 

Чтобы запустить Jira через HTTPS, вы должны выбрать «HTTP & HTTPS» или «HTTPS».

Выберите «HTTP & HTTPS», если вы хотите запустить Jira через HTTPS, но у вас есть пользователи, которые обращаются к Jira через HTTP. Если вы выберете «HTTP & HTTPS», пользователи, которые попытаются получить доступ к Jira через HTTP, будут перенаправлены на адрес HTTPS.

Порт HTTP

Оставьте по умолчанию (8080). Вы можете изменить номер порта, если хотите. См. Раздел Изменение TCP-портов Jira.

Это будет отключено, если вы установите для профиля только «HTTPS».

Порт HTTPS

Оставьте по умолчанию (8443). Вы можете изменить номер порта, если хотите. См. Раздел Изменение TCP-портов Jira.

Путь хранилища ключей

Укажите местоположение хранилища ключей вашего сертификата. Это будет выбрано, когда хранилище ключей было сохранено на шаге 13 и должно быть <Jira_HOME> /jira.jks.

Пароль хранилища ключей

Укажите пароль для хранилища ключей. Если вы создали самозаверяющий сертификат, это пароль, который вы указали для ключа и хранилища ключей при создании сертификата на шаге 13.

Псевдоним хранилища ключей

Каждая запись в хранилище ключей идентифицируется псевдонимом. Мы рекомендуем использовать jira для этого сертификата, как на шаге 10.

  1. Нажмите кнопку «Проверить сертификат в хранилище ключей», чтобы подтвердить следующее:
  • Проверьте, можно ли найти сертификат в хранилище ключей.
  • Проверьте, работает ли пароль хранилища ключей.
  • Проверьте, можно ли найти ключ, используя ключевой псевдоним.
  1. Нажмите кнопку «Сохранить», чтобы сохранить изменения.

Расширенная конфигурация

Выполнение нескольких экземпляров на одном хосте

При запуске нескольких экземпляров на одном и том же хосте важно указать атрибут адреса в файле <Jira_INSTALLATION> /conf/server.xml, поскольку по умолчанию соединитель будет прослушивать все доступные сетевые интерфейсы, поэтому указание адреса предотвратит конфликты с коннекторами, запущенными на том же порту по умолчанию. См. Документацию Tomcat Connector для получения дополнительной информации об установке атрибута адреса в документах HTTP-коннектора Apache Tomcat.

Установка командной строки

Шаг 1. Создайте хранилище ключей

  1. Создайте хранилище ключей Java :

<JAVA_HOME>/keytool -genkey -alias jira -keyalg RSA -keystore <Jira_HOME>/jira.jks

Вместо имени и фамилии введите URL-адрес сервера, за исключением «https: //» (например: jira.atlassian.com).

  1. Введите пароль.
  2. Создайте CSR для подписания, используя пароль с шага 2:
  3. Отправьте CSR в центр сертификатов для подписания. Они будут предоставлять подписанный сертификат и корневой и / или промежуточный центр сертификатов.(предупреждение) Если сертификат не будет подписан, перейдите к шагу 7.
  4. Импортируйте корневой и / или промежуточный центр сертификатов:

<JAVA_HOME>/keytool -import -alias rootCA -keystore <Jira_HOME>/jira.jks -trustcacerts -file root.crt

  1. Импортируйте подписанный сертификат (CA предоставляет это):

<JAVA_HOME>/keytool -import -alias jira -keystore <Jira_HOME>/jira.jks -file jira.crt

  1. Убедитесь, что сертификат существует в хранилище ключей:

<JAVA_HOME>/keytool -list -alias jira -keystore <Jira_HOME>/jira.jks

Это должно быть PrivateKeyEntry(частная ключевая запись), если это не настройка сертификата не была успешно завершена. Например:


jira, Jan 1, 1970, PrivateKeyEntry,
Certificate fingerprint (MD5): 73:68:CF:90:A8:1D:90:5B:CE:2A:2F:29:21:C6:B8:25

Шаг 2. Обновление Tomcat с помощью хранилища ключей

  1. Создайте резервную копию <Jira_INSTALL> /conf/server.xml перед ее редактированием.
  2. Отредактируйте соединитель HTTPS так, чтобы он имел параметры, указывающие на хранилище ключей:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
              maxHttpHeaderSize="8192" SSLEnabled="true"
              maxThreads="150" minSpareThreads="25"
              enableLookups="false" disableUploadTimeout="true"
              acceptCount="100" scheme="https" secure="true"
              sslEnabledProtocols="TLSv1.2,TLSv1.3"
              clientAuth="false" useBodyEncodingForURI="true"
              keyAlias="jira" keystoreFile="<Jira_HOME>/jira.jks" keystorePass="changeit" keystoreType="JKS"/>

 

Убедитесь, что вместо <Jira_HOME> выбран правильный путь и измените порт по мере необходимости.

 

Если организация не поддерживает последнюю версию TLS, вы можете вернуться к более ранней версии. Изменить:


sslEnabledProtocols="TLSv1.2,TLSv1.3"

То:


sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2,TLSv1.3"

  1. Отредактируйте соединитель HTTP так, чтобы он перенаправлялся на соединитель HTTPS:

<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="8080" protocol="HTTP/1.1" redirectPort="<PORT_FROM_STEP_1>" useBodyEncodingForURI="true"/>

 

Убедитесь, что значение <PORT_FROM_STEP_1> соответствует соответствующему значению. В этом примере это будет 8443.

  1. Сохраните изменения на server.xml.
  2. Если будет использоваться перенаправление на HTTPS (это рекомендуется), отредактируйте файл <Jira_INSTALL> /WEB-INF/web.xml и добавьте следующий раздел в конце файла перед закрытием </ web-app>. В этом примере все URL-адреса, кроме вложений, перенаправляются с HTTP на HTTPS.

<security-constraint>
                <web-resource-collection>
                               <web-resource-name>all-except-attachments</web-resource-name>
                               <url-pattern>*.jsp</url-pattern>
                               <url-pattern>*.jspa</url-pattern>
                               <url-pattern>/browse/*</url-pattern>
                                <url-pattern>/issues/*</url-pattern>
                </web-resource-collection>
                <user-data-constraint>
                               <transport-guarantee>CONFIDENTIAL</transport-guarantee>
                </user-data-constraint>
</security-constraint>

  1. Перезагрузите Jira после того, как вы сохранили изменения.

Вы также можете перенаправить пользователей с URL-адресов HTTP на URL-адреса HTTPS, выбрав профиль «HTTP & HTTPS» в инструменте конфигурации Jira. Это перенаправит все URL-адреса HTTP на URL-адреса HTTPS.

Если вы хотите перенаправить определенные страницы на HTTPS, вам нужно сделать это вручную. Для этого выберите профиль «Только HTTPS» в инструменте конфигурации Jira и сохраните конфигурацию, а затем создайте файл htaccess на своем веб-сервере, который будет вручную перенаправлять URL-адреса HTTP на соответствующие URL-адреса HTTPS.

Исправление проблем

Ниже приведены некоторые советы по устранению неполадок, если вы используете самозаверяющий ключ, созданный Portecle, как описано выше.Когда вы вводите «https: // localhost: <номер порта>» в своем браузере, если вы получите сообщение типа «Не удается установить соединение с сервером на localhost: 8443», найдите сообщения об ошибках в ваших logs / catalina.out. файл журнала. Вот некоторые возможные ошибки с объяснениями.

  • Проблемы с SSL + Apache + IE: некоторые люди сообщают об ошибках при загрузке вложений через SSL с помощью IE. Это связано с ошибкой IE и может быть исправлено в Apache, установив:

BrowserMatch ".MSIE." 
\nokeepalive ssl-unclean-shutdown 
\ downgrade-1.0 force-response-1.0 

В Google есть еще много материала об этом.

 

  • Не удается найти хранилище ключей:

java.io.FileNotFoundException: /home/user/.keystore (No such file or directory)

Это указывает на то, что Tomcat не может найти хранилище ключей. Утилита keytool создает хранилище ключей в виде файла с именем .keystore в домашнем каталоге текущего пользователя. Для Unix / Linux домашний каталог, вероятно, будет / home / <username>. Для Windows это, скорее всего, C: \ Documents and Settings \ <UserName>.

 

Убедитесь, что вы используете Jira в качестве того же пользователя, который создал хранилище ключей. Если это не так, или если вы используете Jira в Windows в качестве службы, вам нужно указать, где файл хранилища ключей находится в conf / server.xml. Добавьте следующий атрибут в тег соединителя, который вы раскоментировали:


keystoreFile="<location of keystore file>"

Это также может произойти («Невозможно найти /root/.keystore»), если вы добавите атрибут keystoreFile в http-коннектор в server.xml вместо https-коннектора.

 

  • Ответ сертификата и сертификат в хранилище ключей идентичны:

keytool error: java.lang.Exception: Certificate reply and certificate in keystore are identical

Эта ошибка произойдет, если у вас есть идентичные имена или отпечатки пальцев, что является результатом попытки воссоздать сертификат в существующем хранилище ключей. Если вам нужно воссоздать или обновить Cert, вы можете удалить существующее хранилище ключей и создать новое новое хранилище ключей. В этом случае создание нового хранилища ключей и добавление связанных сертификатов исправят проблему. Путь по умолчанию для него в этой документации: $ JAVA_HOME / jre / lib / security / cacerts

 

  • Неверный пароль:

java.io.IOException: Keystore was tampered with, or password was incorrect

 

Вы использовали другой пароль, чем «changeit». Вы должны либо использовать «changeit» как для пароля хранилища ключей, так и для ключевого пароля для Tomcat, или если вы хотите использовать другой пароль, вы должны указать его с помощью атрибута keystorePass тега Connector, как описано выше.

  • Пароли не совпадают:

java.io.IOException: невозможно восстановить ключ

 

Вы указали другое значение для пароля хранилища ключей и ключевого пароля для Tomcat. Оба пароля должны быть одинаковыми.

  • Неверный сертификат:

javax.net.ssl.SSLException: доступный сертификат не соответствует разрешенным наборам SSL-шифров.

 

Если у Keystore имеется более одного сертификата, Tomcat будет использовать первое возвращенное, если иное не указано в SSL-коннекторе в conf / server.xml.

Добавьте атрибут keyAlias в тег Connector, который вы разкомментировали, с соответствующим псевдонимом, например:


<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" useBodyEncodingForURI="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/opt/local/.keystore"
keystorePass="removed"
keyAlias="tomcat"/>

  • Использование Apache Portable Runtime:

APR использует другой механизм SSL, и вы увидите такое же исключение в своих журналах


SEVERE: не удалось инициализировать разъем [Connector [HTTP / 1.1-8443]]
LifecycleException: Ошибка инициализации обработчика протокола: java.lang.Exception: файл сертификата не указан или недействительный формат файла

Причина этого заключается в том, что APR Connector использует OpenSSL и не может использовать хранилище ключей таким же образом. Вы можете исправить это одним из двух способов:

  • Используйте Http11NioProtocol для обработки SSL-подключений. Отредактируйте файл server.xml, чтобы тег SSL Connector, который вы просто не комментировали, указывает Http11NioProtocol вместо протокола APR.

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
  maxHttpHeaderSize="8192" SSLEnabled="true" keystoreFile="${user.home}/.keystore"
  maxThreads="150" enableLookups="false" disableUploadTimeout="true"
  acceptCount="100" scheme="https" secure="true"
  clientAuth="false" sslProtocol="TLS" useBodyEncodingForURI="true"/>

  • Настройте коннектор для использования протокола APR. Это возможно только в том случае, если у вас есть PEM-кодированные сертификаты и закрытые ключи. Если вы использовали OpenSSL для генерации своего ключа, тогда у вас будут эти файлы с кодировкой PEM - во всех остальных случаях обратитесь за помощью к поставщику сертификатов.

<Connector
  port="8443" maxThreads="200"
  scheme="https" secure="true" SSLEnabled="true"
  SSLCertificateFile="${user.home}/certificate.pem"
  SSLCertificateKeyFile="${user.home}/key.pem"
  clientAuth="optional" SSLProtocol="TLSv1.2,TLSv1.3"/>

  • Включение проверки подлинности клиента. Чтобы включить аутентификацию клиента в Tomcat, убедитесь, что значение атрибута clientAuth в элементе Connector вашего файла server.xml вашего Tomcat является истинным.

<Connector
                ...
                clientAuth="true"
                ... />

Дополнительные сведения о параметрах элемента Connector см. В документации по настройке SSL-конфигурации HOW-TO Tomcat 8.