我有一臺FreeBSD服務器 FreeBSD hotspot.brightlan.net 6.2-RELEASE-p6 FreeBSD 6.2-RELEASE-p6#0:Sat Jul 21 13:42:25 EDT 2007錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗
在這臺服務器上,我有一個應用程序在PHP中使用curl通過他們的API連接到Authorize.net。最近他們更新了他們的SSL證書以支持sha256,因此SSL證書也發生了變化。此更改後,應用程序無法連接。如果我做了 curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,FALSE) 它連接成功,但我想在SSL握手期間完全驗證服務器。 我已經注意到,通過指定使用CURLOPT_CAINFO選項更新ca證書文件後,同樣從不同的Linux ubuntu服務器獲取連接。
但在這個FreeBSD的,它不會連接。我還注意到SSL證書是以通配符(即* .authorize.net)頒發的。因此,在Ubuntu服務器上,我也必須禁用CURLOPT_SSL_VERIFYHOST。但是在這個FreeBSD服務器上,它甚至不能使用這個選項。 (cgi-fcgi)(built:May 4 2007 13:35:10)
任何幫助表示讚賞。
感謝您的回覆。我知道它是一箇舊系統,我已經知道我需要升級openssl。我也這樣做了,並且在類似的(測試)設置上工作良好。現在的困難,現在是把它連接起來,使它不會打破別人。例如,如果我鏈接它,它會中斷ssh服務。我不想在生產系統上破壞事情。 –
編譯openssl以指定安裝路徑時存在構建選項,以便它與系統安裝不衝突。 curl似乎有類似的選項,您可以指定要使用的SSL庫的路徑。如果將這些組合在一起,則可以使用自定義SSL構建捲曲,而不會使用本地安裝進行推斷。請查看相關的源代碼分發文件,例如INSTALL,這些文件通常會更詳細地描述此過程。 –