我試圖從我的(本地主機)Windows 8機器運行AppServ 2.5.10 連接亞馬遜的S3文件,其中包括Apache 2.2.8,php 5.2.6,mysql 5.0.51b和phpMyAdmin 2.10.3)使用Amazon SDK for php。 爲了與亞馬遜SDK的名稱空間功能兼容,我使用版本5.3.28替換了php,使用 下載了壓縮文件並將其解壓縮。AWS SSL安全錯誤:[捲曲] 60:SSL證書概率...:無法獲取本地發行者證書
我的php代碼正常工作以訪問Amazon EC2中的S3文件,但在我的Windows本地主機中失敗。 然而,當我運行PHP srcipt閱讀在Windows本地主機亞馬遜S3存儲文件,我得到了SSL錯誤如下:
致命錯誤:未捕獲的異常「狂飲\ HTTP \異常\ CurlException」有消息「[捲曲] 60:SSL證書問題:在C:\ AppServ \ www \ ecity \ vendor \ guzzle \ guzzle \ src \ Guzzle \ Http \ Curl \ CurlMulti.php中無法獲得本地頒發者證書[url] https://images-st.s3.amazonaws.com/us/123977_sale_red_car.png'342堆棧跟蹤: #0 C:\ AppServ \ www \ ecity \ vendor \ guzzle \ guzzle \ src \ Guzzle \ Http \ Curl \ CurlMulti.php(283):Guzzle \ Http \ Curl \ CurlMulti-> isCurlException(Object(Guzzle \ Http \ Message) \ Request),Object(Guzzle \ Http \ Curl \ CurlHandle),Array)#1 C:\ AppServ \ www \ ecity \ vendor \ guzzle \ guzzle \ src \ Guzzle \ Http \ Curl \ CurlMulti.php(248):Guzzle \ Http \ Curl \ CurlMulti-> processResponse(Object(Guzzle \ Http \ Message \ Request),Object(Guzzle \ Http \ Curl \ CurlHandle),Array)#2 C:\ App (231):Guzzle \ Http \ Curl \ CurlMulti-> processMessages()#3 C:\ AppServ \ www \ ecity \ Curve \ CurlMulti.php在C:\ AppServ中的供應商\ guzzle \ guzzle \ src \ Guzzle \ Http \ Curl \ CurlMulti.php(215):Guzzle \ Http \ Curl \ CurlMulti-> executeHandles()#4 C:\ AppServ \ www \ ecity \ ven \ WWW \ ecity \供應商\ AWS \ AWS-SDK-PHP的\ src \ AWS \ COMMON \客戶端\ AbstractClient.php上線288
我從http://curl.haxx.se/ca/cacert.pem下載certifate並把它定義在php.ini如下: curl.cainfo =「C:\ AppServ \ cacert.pem」 但我仍然有同樣的錯誤。看起來php不尊重php.ini中定義的curl.cainfo。
我的php版本是5.3.28 accourding到localhost/phpinfo.php。我還使用 echo ini_get(「curl.cainfo」)檢查了cainfo參數 以正確爲C:\ AppServ \ cacert.pem; 在PHP腳本中。高於5.3的PHP版本應該在php.ini中支持curl.cainfo。
在Windows的命令行中,我檢查捲曲行爲,似乎工作正常。
C:\Users\Jordan>curl https://s3-us-west-2.amazonaws.com/images-st/aaa.txt
curl: (60) SSL certificate problem: unable to get local issuer certificate
......
C:\Users\Jordan>curl --cacert C:\AppServ\cacert.crt https://s3-us-west-2.amazonaws.com/images-st/aaa.txt
This is aaa.txt file.
Stored in Amazon S3 bucket.
是否監守監守我使用的Apache在Windows中不匹配的PHP 28年3月5日的zip文件,我從http://windows.php.net/download/ VC9 86下載線程安全的(2014君11 1點09分56秒)壓縮版本。
在我的Apache的httpd的-ssl.conf中的文件,我有以下的甚至設置我從本地主機在Windows中使用8
<VirtualHost _default_:443>
DocumentRoot "C:/AppServ/www"
ServerName localhost:443
ServerAdmin [email protected]
ErrorLog "C:/AppServ/Apache2.2/logs/error.log"
TransferLog "C:/AppServ/Apache2.2/logs/access.log"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "C:/AppServ/Apache2.2/conf/mydomain.cert"
SSLCertificateKeyFile "C:/AppServ/Apache2.2/conf/mydomain.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "C:/Apache2.2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "C:/AppServ/Apache2.2/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
現在我想知道這是什麼問題以及如何連接到亞馬遜S3 bucket文件和RDS數據庫沒有 產生這些curl無法從我的Windows 8本地主機獲取本地頒發者證書問題。有什麼建議?
您是否嘗試過[設置'ssl.certificate_authority'選項](http://docs.aws.amazon.com/aws-sdk -php/guide/latest/faq.html#what-do-i-do-about-a-curl-ssl-certificate-error)當你實例化SDK時? –
謝謝!傑里米。您的AWS專家確實馬上發現了這個問題。 – user2818066
沒問題! :-) –