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/project
obtengo 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 -k
opción de ignorar la verificación SSL, obtengo los resultados esperados.
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í:
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.
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