Jira Server Rest API не работает должным образом с SSL

Jira Server Rest API не работает должным образом с SSL

У меня есть экземпляр Jira, работающий на сервере Debian, к которому я хочу получить доступ из облачного приложения HockeyApp. Проблема возникает, когда HockeyApp пытается получить доступ к списку проектов Jira (не удается без ошибок). Поэтому я проверил API Jira и нашел метод, который, как я ожидаю, будет вызван из бэкенда HockeyApp.

Когда я получаю доступ к API с помощью Chrome, https://jira.company.com/rest/api/latest/projectя получаю ожидаемые результаты в виде json. Но когда я пытаюсь вызвать этот API из Postman, curl или httpie, я каждый раз получаю ошибки.

curl говорит мне:

curl: (60) Проблема с сертификатом SSL: невозможно получить сертификат локального издателя. Более подробная информация здесь:https://curl.haxx.se/docs/sslcerts.html

curl не смог проверить легитимность сервера и, следовательно, не смог установить безопасное соединение с ним. Чтобы узнать больше об этой ситуации и о том, как ее исправить, посетите веб-страницу, указанную выше.

Поэтому я попытался загрузить последний файл cacert-2018-10-17.pem и попробовал еще раз. Безуспешно. Если я добавлю опцию -kигнорировать проверку ssl, я получу ожидаемые результаты.

Почтальон говорит мне: введите описание изображения здесь

Если я отключу проверку SSL в настройках postman, я получу ожидаемые результаты. Но сервер не использует самоподписанный сертификат SSL. Сертификат выглядит так: введите описание изображения здесь

Сертификат отлично работает во всех браузерах и других подключенных приложениях, таких как Bitbucket и Confluence.

Как я могу узнать причину этой проблемы?

решение1

После долгих поисков мне наконец удалось выяснить, что было причиной проблемы.

Я начал изучать сетевой трафик при выполнении вызова REST из cURL с помощью Wireshark и обнаружил, что сертификат действительно плохой — просто Chrome это не волнует.

введите описание изображения здесь

поэтому я проверил сертификат с помощью:

openssl s_client -showcerts -connect jira.company.com:443

который отвечает:

Start Time: 1544006181
Timeout   : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)

Итак, наконец, я узнал, что сертификат, используемый на моем сервере, не предоставляет полную цепочку сертификации. Вот почему некоторые клиенты отрицают это.

Я изменил JKS, чтобы он содержал полную цепочку копирования файлов crt в один файл company.com.pem (более подробное описание здесь:https://www.digicert.com/ssl-support/pem-ssl-creation.htm)

-----BEGIN CERTIFICATE----- 
(MyCompany.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Intermediate.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Root.crt) 
-----END CERTIFICATE-----

и создал новый JKS для установки Jira, используя

openssl pkcs12 -export -in company.com.pem -name tomcat -out jira.p12
keytool -importkeystore -srckeystore jira.p12 -srcstoretype pkcs12 
        -destkeystore jira.jks -deststoretype JKS

Связанный контент