Jira Server Rest API no funciona correctamente con SSL

Jira Server Rest API no funciona correctamente con SSL

Tengo una instancia de Jira ejecutándose en un servidor Debian al que quiero acceder desde una aplicación en la nube llamada HockeyApp. El problema ocurre cuando HockeyApp intenta acceder a la lista de proyectos de Jira (falla sin error). Así que verifiqué la API de Jira y encontré un método al que espero que se llame desde el backend de HockeyApp.

Cuando accedo a la API usando Chrome en https://jira.company.com/rest/api/latest/projectobtengo los resultados esperados como json. Pero cuando intento llamar a esta API desde Postman, curl o httpie, siempre recibo errores.

rizo me dice:

curl: (60) Problema con el certificado SSL: no se puede obtener el certificado del emisor local Más detalles aquí:https://curl.haxx.se/docs/sslcerts.html

curl no pudo verificar la legitimidad del servidor y, por lo tanto, no pudo establecer una conexión segura con él. Para obtener más información sobre esta situación y cómo solucionarla, visite la página web mencionada anteriormente.

Así que intenté descargar el archivo cacert-2018-10-17.pem más reciente y lo intenté nuevamente. Sin suerte. Si agrego la -kopción de ignorar la verificación SSL, obtengo los resultados esperados.

el cartero me dice: ingrese la descripción de la imagen aquí

Si desactivo la verificación SSL en la configuración de Postman, obtengo los resultados esperados. Pero el servidor no utiliza un certificado SSL autofirmado. El certificado se ve así: ingrese la descripción de la imagen aquí

El certificado funciona bien en todos los navegadores y en otras aplicaciones conectadas como Bitbucket y Confluence.

¿Cómo puedo saber qué está causando estos problemas?

Respuesta1

Después de investigar mucho más, finalmente descubrí qué estaba causando el problema.

Comencé a investigar el tráfico de red al ejecutar una llamada REST desde cURL usando Wireshark para descubrir que el certificado es realmente malo, solo que a Chrome no le importa.

ingrese la descripción de la imagen aquí

entonces verifiqué el Certificado usando:

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

que responde con:

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

Finalmente descubrí que el certificado utilizado en mi servidor no proporciona la cadena de certificación completa. Por eso algunos clientes lo niegan.

Cambié el JKS para que contenga la cadena completa copiando los archivos crt en un archivo company.com.pem (una descripción más detallada aquí: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-----

y creé un nuevo JKS para la instalación de 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

información relacionada