Jira Server Rest API 無法與 SSL 正常運作

Jira Server Rest API 無法與 SSL 正常運作

我有一個在 debian 伺服器上運行的 Jira 實例,我想從名為 HockeyApp 的雲端應用程式存取該實例。當 HockeyApp 嘗試存取 Jira 的專案清單(失敗但沒有錯誤)時,會發生此問題。因此,我檢查了 Jira API,找到了一個我希望從 HockeyApp 後端呼叫的方法。

當我使用 Chrome 存取 API 時,https://jira.company.com/rest/api/latest/project我得到了 json 形式的預期結果。但是當我嘗試從 Postman、curl 或 httpie 呼叫這個 API 時,我每次都會遇到錯誤。

捲曲告訴我:

捲曲:(60)SSL憑證問題:無法取得本地頒發者憑證更多詳細資訊請參閱:https://curl.haxx.se/docs/sslcerts.html

curl 無法驗證伺服器的合法性,因此無法與其建立安全連線。要了解有關此情況以及如何解決此問題的更多信息,請訪問上述網頁。

所以我嘗試下載最新的 cacert-2018-10-17.pem 檔案並再次嘗試。沒有任何運氣。如果我新增-k忽略 ssl 驗證的選項,我確實會得到預期的結果。

郵差告訴我: 在此輸入影像描述

如果我確實在郵差的設定中關閉 SSL 驗證,我確實會得到預期的結果。但伺服器不使用自簽署的 SSL 憑證。證書看起來像這樣: 在此輸入影像描述

該憑證在所有瀏覽器、其他連接的應用程式(例如 Bitbucket 和 Confluence)上運作良好。

我如何找出導致此問題的原因?

答案1

經過更多挖掘後,我終於找到了導致問題的原因。

當使用 Wireshark 從 cURL 執行 REST 呼叫時,我確實開始研究網路流量,發現證書確實很糟糕 - 只是 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 fiules 複製到一個 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-----

並使用以下命令為 jira 安裝創建了一個新的 JKS

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

相關內容