全部搜索後,我不明白爲什麼向遠程啓用SSL的主機發出的cURL請求在我的情況下只有50%左右的時間成功。情況如下:我使用PHP CLI運行的單個PHP腳本中有一系列cURL請求,它們全部發給HTTPS遠程主機。偶爾當我運行的請求成功執行,但由於某些原因大多數時候我運行的腳本,我從捲曲以下錯誤:cURL/PHP請求執行50%的時間
* About to connect() to www.virginia.edu port 443 (#0)
* Trying 128.143.22.36... * connected
* Connected to www.virginia.edu (128.143.22.36) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac
* Closing connection #0
如果我再試了幾次,我得到了相同的結果,但在幾次嘗試後,請求將成功完成。之後再次運行腳本會導致錯誤,並且該模式會繼續。研究錯誤'alert bad record mac'並沒有給我帶來任何幫助,而且我仍然毫不猶豫地將它歸咎於SSL問題,因爲腳本仍然偶爾運行。
我在Ubuntu Server 10.04上安裝了php5和php5-curl,以及最新版本的openssl。根據cURL特定選項,CURLOPT_SSL_VERIFYPEER設置爲false,並且CURLOPT_TIMEOUT和CURLOPT_CONNECTTIMEOUT都設置爲4秒。進一步說明這個問題的事實是,在我的Mac OS X開發機器上出現同樣的情況 - 請求只經歷了大約50%的時間。
您可能想Google「錯誤140943FC」 – 2010-12-21 07:10:46
相信我,我做到了。我甚至檢查過,以確保我在prefork MPM中運行Apache,而不是工作線程,因爲顯然有一個與工作線程版本相關的錯誤(我正在運行prefork,所以它沒有幫助)。 – mquinn 2010-12-21 10:57:40
錯誤記錄MAC不引用網絡接口的MAC地址。它指的是「消息認證碼」 – 2012-12-18 03:26:13