尝试对 Jira API 进行简单的 REST 调用时连接失败

问题描述

我有一个简单的 GET 调用,它可以从 Postman、Powershell、C# 甚至浏览器 JS(禁用 CORS 后)完美运行,但将其移植到 ColdFusion CFHTTP 调用失败。

以下是来自 Jira API 的响应:

{
  "ErrorDetail": "I/O Exception: sun.security.validator.ValidatorException: PKIX path building Failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target","Mimetype": "Unable to determine MIME type of file.","Filecontent": "Connection Failure","Statuscode": "Connection Failure.  Status code unavailable.","Responseheader": {
    
  },"Text": true,"Charset": "","Header": ""
}

CF 代码

<cfset jql="<redacted>">
<cfset jiraEndpoint ='https://jira.bullhorn.com/rest/api/2/search?jql=#jql#'>

<cfhttp url = "#jiraEndpoint#" result="res" method="get" username="<redacted>" password="<redacted>">    
    <cfhttpparam type="header" name="Accept" value="application/json" />    
</cfhttp>

<cfheader name="Content-Type" value="application/json">
<cfoutput>
    #serializeJSON(res)#
</cfoutput>

我尝试过的事情:

似乎没有任何效果

解决方法

Jira 的证书配置检查正常,包括他们的中间证书 - 您可以使用 ssllabs 或类似的测试人员来确认这一点,例如 https://globalsign.ssllabs.com/analyze.html?d=jira.bullhorn.com

在您的情况下,您看到问题的原因是您使用的是旧版本的 Coldfusion,该版本使用的是旧 JVM,既没有下载他们的 Digicert 中间证书,也没有预安装该证书。理想情况下,您应该从 CF11 升级。

作为一种解决方法,您可以手动将 Digicert 中间证书 + Jira 扩音器证书安装到服务器的 cacerts - 说明因您的环境而异,但一个示例是 https://helpx.adobe.com/coldfusion/kb/import-certificates-certificate-stores-coldfusion.html - 然后重新启动 CF 服务并重试 cfhttp打电话。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...