A API Jira Server Rest não funciona corretamente com SSL

A API Jira Server Rest não funciona corretamente com SSL

Tenho uma instância do Jira em execução em um servidor Debian que desejo acessar a partir de um aplicativo em nuvem chamado HockeyApp. O problema acontece quando o HockeyApp tenta acessar a lista de projetos do Jira (falha sem erros). Então verifiquei a API do Jira e encontrei um método que espero ser chamado no back-end do HockeyApp.

Quando acesso a API usando o Chrome em https://jira.company.com/rest/api/latest/projectobtenho os resultados esperados como json. Mas quando tento chamar essa API do Postman, curl ou httpie, sempre recebo erros.

curl me diz:

curl: (60) Problema no certificado SSL: não é possível obter o certificado do emissor local Mais detalhes aqui:https://curl.haxx.se/docs/sslcerts.html

curl não conseguiu verificar a legitimidade do servidor e, portanto, não conseguiu estabelecer uma conexão segura com ele. Para saber mais sobre esta situação e como corrigi-la, visite a página da web mencionada acima.

Então tentei baixar o arquivo cacert-2018-10-17.pem mais recente e tentei novamente. Sem sorte. Se eu adicionar a -kopção de ignorar a verificação SSL, obtenho os resultados esperados.

carteiro me diz: insira a descrição da imagem aqui

Se eu desligar a verificação SSL nas configurações do carteiro, obtenho os resultados esperados. Mas o servidor não usa um certificado SSL autoassinado. O certificado fica assim: insira a descrição da imagem aqui

O certificado está funcionando bem em todos os navegadores e outros aplicativos conectados como Bitbucket e Confluence.

Como posso descobrir o que está causando esses problemas?

Responder1

Depois de muito pesquisar, finalmente descobri o que estava causando o problema.

Comecei a examinar o tráfego de rede ao executar uma chamada REST do cURL usando o Wireshark para descobrir que o certificado é realmente ruim - apenas o Chrome não se importa.

insira a descrição da imagem aqui

então verifiquei o certificado usando:

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

que responde com:

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

Finalmente descobri que o certificado usado no meu servidor não fornece a cadeia de certificação completa. É por isso que alguns clientes negam.

Alterei o JKS para conter a cadeia completa copiando os arquivos crt em um arquivo company.com.pem (descrição mais detalhada aqui: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-----

e criei um novo JKS para a instalação do jira usando

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

informação relacionada