Sto provando a connettere i file S3 di Amazon dal mio (localhost) computer Windows 8 con AppServ 2.5.10 che include Apache 2.2.8, php 5.2.6, mysql 5.0.51b e phpMyAdmin 2.10.3) usando Amazon SDK per php. Per essere compatibile con la funzione namespace di Amazon SDK, ho sostituito php con la versione 5.3.28 per scaricando il file zippato e decompresso.Errore di sicurezza SSL AWS: [curl] 60: probabilita 'del certificato SSL: impossibile ottenere il certificato emittente locale
Il mio codice php funziona correttamente per accedere al file S3 in Amazon EC2 ma non è riuscito nel mio host Windows locale. Tuttavia quando ho eseguito lo srcipt php per leggere il file bucket Amazon S3 nel computer host locale di Windows, ho avuto l'errore SSL come segue:
Fatal error: eccezione Uncaught 'Guzzle \ Http \ Exception \ CurlException' con il messaggio '[ricciolo ] 60: Problema certificato SSL: impossibile ottenere il certificato emittente locale [url] https://images-st.s3.amazonaws.com/us/123977_sale_red_car.png 'in C: \ AppServ \ www \ ecity \ vendor \ guzzle \ guzzle \ src \ Guzzle \ Http \ Curl \ CurlMulti.php: 342 Traccia stack: # 0 C: \ AppServ \ www \ ecity \ vendor \ guzzle \ guzzle \ src \ Guzzle \ Http \ Curl \ CurlMulti.php (283): Guzzle \ Http \ Curl \ CurlMulti-> isCurlException (Object (Guzzle \ Http \ Message \ Richiesta), Oggetto (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 Serve \ www \ ecity \ vendor \ guzzle \ guzzle \ src \ Guzzle \ Http \ Curl \ CurlMulti.php (231): Guzzle \ Http \ Curl \ CurlMulti-> processMessages() # 3 C: \ AppServ \ www \ ecity \ vendor \ guzzle \ guzzle \ src \ Guzzle \ Http \ Curl \ CurlMulti.php (215): Guzzle \ Http \ Curl \ CurlMulti-> executeHandles() # 4 C: \ AppServ \ www \ ecity \ ven in C: \ AppServ \ www \ eCity \ vendor \ AWS \ AWS-sdk-php \ src \ Aws \ Common \ client \ AbstractClient.php on line 288
scarico il certifate da http://curl.haxx.se/ca/cacert.pem e definirlo in php.ini come segue: curl.cainfo = "C: \ AppServ \ cacert.pem" ma ho ancora lo stesso errore. Sembra che php non onori il curl.cainfo definito in php.ini.
La mia versione di php è 5.3.28 accourding a localhost/phpinfo.php. Ho anche verificato che il parametro cainfo fosse corretto come C: \ AppServ \ cacert.pem utilizzando echo ini_get ("curl.cainfo"); nello script php. La versione PHP superiore a 5.3 supporterà curl.cainfo in php.ini.
Nella riga di comando di Windows, controllo il comportamento del ricciolo e sembra funzionare correttamente.
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.
E 'becuase becuase ho usato Apache in Windows che non corrisponde php 5.3.28 file zip scaricato dal http://windows.php.net/download/ VC9 x86 thread-safe (2014-Giu-11 01:09:56) versione zip.
Nel file di httpd-ssl.conf di mio apache, ho la seguente impostazione, anche io uso da host locale in 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>
Ora mi chiedo qual è il problema e come collegarsi ad Amazon I file bucket S3 e il database RDS senza che producono questi arricciamenti non possono ottenere problemi con i certificati emittente locali dal mio host locale Windows 8. Qualche consiglio?
Hai provato [impostando l'opzione '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) quando si crea un'istanza dell'SDK? –
Grazie! Jeremy. L'esperto AWS ha capito subito il problema. – user2818066
Nessun problema! :-) –