В этой статье мы рассмотрим процесс перехода нашего Jira сервера с HTTP на HTTPS, т.е. прикрутим SSL сертификат.

По умолчанию после установки Jira на сервер, он доступен по протоколу HTTP, т.е. данные не шифруются между клиентом и сервером. Это потенциальная опасность, можно перехватить логины и пароли, так как они передаются в открытом виде.

Jira Service Desk подключение через HTTP

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

Для удобства именуем сертификаты следующим образом

root.crt — рутовый сертификат

intermediate.crt — промежуточный сертификат

company.crt — сам сертификат, выпущенный к примеру на защиту домена второго уровня с возможностью защиты всех поддоменнов.

company.key — закрытый ключ от сертификата

Перенесем все сертификаты через WinSCP на сервер JIRA в папку /opt/atlassian/jira/jre/bin. Можно в любую другую папку, главное запомнить путь. В той папке куда мы скопировали находятся утилиты для генерации специального файла для перевода сервиса JIRA на протолок HTTPS. И нам не придется вводить полный путь к утилите и к файлам во время процесса.

переходим через putty в директорию куда мы скопировали сертификаты командой

cd /opt/atlassian/jira/jre/bin

объединим файлы root.crt и intermediate.crt в один файл командой

cat intermediate.crt root.crt > cabundle.crt

Нам необходимо отредактировать файл, иначе следующая команда выпадет в ошибку. Все дело в том, что при операции конкатенации содержимое сертификата root.crt следует сразу после intermediate.crt, а должен начинаться со следующей строки. Предыдущую команду можно выполнить и вручную открыв файлы любым текстовым редактором и добавив содержимое в следующей последовательности. Сначала промежуточный сертификат, затем рутовый. Мы это сделаем через редактор vi в консоли putty. Открываем файл командой

vi cabundle.crt

и видим следующую картину

Jira Service Desk редактирование сертификата

Переводим курсор в конец первого сертификата. Переходим в режим редактирования клавишей A. Переносим начало второго сертификата на следующую строку нажав Enter. Должно быть так.

Jira Service Desk установка сертификата

Выходим из режима редактирования нажатием на клавишу ESC. Сохраняем изменения и выходим из файла командой :wq!.

Теперь экспортируем наш сертификат со всей цепочкой сертификатов в файл формата .p12 командой

openssl pkcs12 -export -chain -inkey company.key -in company.crt -name "JIRA" -CAfile cabundle.crt -out jira.p12

Если с файлами все в порядке, то система попросит вести пароль на файл. Вводим 2 раза. (Я скопировал сертификат с закрытым ключем в другую директорию как видно из скрина ниже. Вам этого делать не нужно).

Теперь переконвертируем наш зашифрованный файл с сертификатами и закрытым ключем в формат JKS, чтобы JAVA могла работать с ним. Команда такая.

./keytool -importkeystore -destkeypass Passwordjira -deststorepass Passwordjira -destkeystore /opt/atlassian/jira/jre/bin/jira.jks -srckeystore jira.p12 -srcstoretype PKCS12 -srcstorepass Passwordjira -alias "JIRA"

По плану команда должна отработать без ошибок. Но, то ли после обновления OC, то ли после обновления JIRA на новую версию, при попытке сгенерировать файл формата JKS может появится такое предупреждение

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /opt/atlassian/jira/jre/bin/jira.jks -destkeystore /opt/atlassian/jira/jre/bin/jira.jks -deststoretype pkcs12".

Просто тупо вводим команду и получаем нужного формата файл JKS

./keytool -importkeystore -srckeystore /opt/atlassian/jira/jre/bin/jira.jks -destkeystore /opt/atlassian/jira/jre/bin/jira.jks -deststoretype pkcs12
Enter source keystore password:
Entry for alias jira successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

Warning:
Migrated "/opt/atlassian/jira/jre/bin/jira.jks" to Non JKS/JCEKS. The JKS keystore is backed up as "/opt/atlassian/jira/jre/bin/jira.jks.old".

Также после создания файла необходимо сменить владельца и права на файл аналогично файлам находящимся в папке, где сгенерировался файл формата JKS, т.е. примерно так как на скриншоте. Все этого можно сделать также через консоль putty или через WinSCP

Jira Service Desk обновление сертификата

И в конце проверяем все ли мы сделали правильно вводя команду

./keytool -list -keystore jira.jks

Вводим пароль Passwordjira, нас интересует строка PrivateKeyEntrу, если она присутствует, то все норм. Ниже скрин как все должно быть.

Jira Service Desk проверка корректности сертификата

Поехали дальше. Для того, чтобы JIRA работала через HTTPS, необходимо отредактировать еще 2 файла. Переходим в каталог, где лежит конфигурация JIRA Service Desk

cd /opt/atlassian/jira/conf/

И перед изменением создадим копию следующей файла командой

cp server.xml serverBKP.xml

теперь отредактируем файл войдя в него командой

vi server.xml

Нас интересует 2 выделенных блока в файле.

Небольшое примечание: в новых версиях инсталлятора или после обновления JIRA SD, отсутствует блок для настройки работы сервиса через протокол HTTPS. Его необходимо добавлять вручную.

Jira Service Desk редактирование файла server.xml для работы с SSL

приводим их к следующему виду войдя в режим редактирования нажатием на клавишу A

Jira Service Desk редактирование файла server.xml

Выходим из режима редактирования нажав на клавишу ESC и выходим из файла сохраняя изменения командой :wq!

Один важный момент при редактировании файла server.xml. Между параметрами в выделенных блоках не должно быть более одного пробела. Если поставить лишний пробел, то JIRA перестанет работать. Ни перезагрузка сервера, ни перезапуск службы не решит проблему.

откроем теперь файл web.xml

vi web.xml

и добавим в конец файла следующий блок перед закрывающим тегом </web-app>. Этот блок отвечает за перенаправление всех запросов с 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>

должно получиться так

Jira Service Desk редактирование файла web.xml для редиректа

Теперь для вступления изменений в силу передернем службу JIRA командами

/etc/init.d/jira stop
/etc/init.d/jira start

дожидаемся загрузки и смотрим, что получилось. При переходе на адрес http://jira.companyname.com:8080 нас автоматом перекидывает на https://jira.companyname.com:8443

Jira Service Desk подключение через HTTPS

После входа останется только подтвердить новый URL-адрес нажав на Update JIRA’s base URL

jira's base url update

На этом все.

Добавить комментарий