Błąd certyfikatu PHP-SSL: nie można uzyskać lokalnego certyfikatu wystawcy

Uruchamiam PHP w wersji 5.6.3 jako część XAMPP na Windows 7.

Kiedy próbuję użyć API Mandrill, dostaję następujący błąd:

Uncaught exception 'Mandrill_HttpError' with message 'API call to messages/send-template failed: SSL certificate problem: unable to get local issuer certificate'

Próbowałem już wszystkiego, co przeczytałem na StackOverflow, łącznie z dodaniem do php następujących elementów.plik ini:

curl.cainfo = "C:\xampp\php\cacert.pem"

I oczywiście pobrane do to miejsce cacert.plik pem z http://curl.haxx.se/docs/caextract.html

Ale po tym wszystkim, zrestartowałem XAMPP i serwer Apache, ale nadal otrzymuję ten sam błąd.

Naprawdę Nie wiem, czego jeszcze spróbować. Czy ktoś może doradzić, czego jeszcze mogę spróbować?
Author: abraham, 2015-03-04

11 answers

W końcu to działa!

  1. Pobierz pakiet certyfikatów .

  2. Połóż to gdzieś. W moim przypadku był to katalog c:\wamp\ (Jeśli używasz Wamp 64 bit to jest to c:\wamp64\).

  3. Włącz mod_ssl w Apache i php_openssl.dll w php.ini (odkomentuj je usuwając ; na początku). Ale uważaj, mój problem polegał na tym, że miałem dwa php.ini pliki i muszę to zrobić w obu. Jednym z nich jest ten, który dostajesz z paska zadań WAMP ikona, a inna jest, w moim przypadku, w C:\wamp\bin\php\php5.5.12\

  4. Dodaj te linie do cert w obu plikach php.ini:

    curl.cainfo="C:/wamp/cacert.pem"
    openssl.cafile="C:/wamp/cacert.pem"
    
  5. Uruchom ponownie usługi Wamp.

 229
Author: Mladen Janjetovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-22 09:02:30

Zastrzeżenie: ten kod sprawia, że serwer nie jest bezpieczny.

Miałem ten sam problem w Mandrill.plik php po linii 65 gdzie jest napisane $this - > ch = curl_init ();

Dodaj następujące dwie linijki:

curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);

To rozwiązało mój problem, a także wysłało e-mail za pomocą localhost, ale sugeruję, aby nie używać go w wersji live live. Na Twoim aktywnym serwerze kod powinien działać bez tego kodu.

 83
Author: Shehzad Nizamani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-15 08:55:32

Dzięki @ Mladen Janjetovic,

Twoja sugestia zadziałała u mnie na Macu z zainstalowanym ampps.

Kopiowane: http://curl.haxx.se/ca/cacert.pem

Na: /Applications/AMPPS/extra/etc/openssl/certs/cacert.pem

I zaktualizowany php.ini z tą ścieżką i ponownie uruchomiony Apache:

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo="/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem"
openssl.cafile="/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem"

I zastosowaĹ 'to samo ustawienie w instalacji Windows AMPPS i dziaĹ' aĹ ' o w nim doskonale.

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo="C:/Ampps/php/extras/ssl/cacert.pem"
openssl.cafile="C:/Ampps/php/extras/ssl/cacert.pem"

: To samo dla wamp.

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo="C:/wamp/bin/php/php5.6.16/extras/ssl/cacert.pem"
openssl.cafile="C:/wamp/bin/php/php5.6.16/extras/ssl/cacert.pem"

Jeśli szukasz nowego certyfikatu SSL korzystanie z SAN dla localhost, kroki na ten post pracował dla mnie na Centos 7 / Vagrant / Chrome Browser.

 35
Author: Damodar Bashyal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-06 23:30:39

Po wyświetleniu http://curl.haxx.se/docs/caextract.html strona, zauważysz dużymi literami sekcję o nazwie:

RSA-1024 usunięty

Przeczytaj go, a następnie pobierz wersję certyfikatów, która zawiera certyfikaty' RSA-1024'. https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt

Te będą działać z Mandrillem.

Wyłączenie SSL to zły pomysł.

 17
Author: Arturo Alvarado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-09 21:36:15

Powyższe kroki, choć pomocne, nie działały dla mnie na Windows 8. Nie znam relacji, ale poniższe kroki zadziałały. Zasadniczo zmiana w cacercie.plik pem. Mam nadzieję, że to komuś pomoże.

  • Pobierz cacert.plik pem stąd: http://curl.haxx.se/docs/caextract.html
  • Zapisz plik w folderze instalacyjnym PHP. (np.: jeśli używasz xampp-zapisz go w c:\Installation_Dir\xampp\php\cacert.pem).
  • Otwórz swoje php.plik ini i dodaj te linie:
  • Curl.cainfo="C:\Installation_Dir\xampp\php\cacert.pem" openssl./ align="left" / C:\Installation_Dir\xampp\php\cacert.pem "
  • Uruchom ponownie serwer Apache i to powinno go naprawić (wystarczy zatrzymać i uruchomić usługi w razie potrzeby).
 9
Author: HopeKing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-25 09:55:05

Znalazłem nowe rozwiązanie bez wymaganej certyfikacji, aby wywołać curl tylko dodać kod dwuliniowy.

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 7
Author: Manish sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-20 06:33:41

Opracowanie powyższych odpowiedzi na temat wdrażania serwera.

$hostname = gethostname();
if($hostname=="mydevpc")
{
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}

Powinno działać w środowisku programistycznym bez narażania serwera po wdrożeniu.

 2
Author: Noel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-08 02:29:23

Jeśli nie masz dostępu do php.ini, dodanie tego kodu (po linii $ch = curl_init();) działa dla mnie:

$certificate_location = "C:\Program Files (x86)\EasyPHP-Devserver-16.1\ca-bundle.crt"; // modify this line accordingly (may need to be absolute)
curl_setopt($ch, CURLOPT_CAINFO, $certificate_location);
curl_setopt($ch, CURLOPT_CAPATH, $certificate_location);

Następnie wystarczy pobrać ca-bundle.crt i zapisz go w miejscu określonym w $certificate_location.

 2
Author: ban-geoengineering,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 19:54:13

Miałem ten sam problem podczas budowania aplikacji w AppVeyor.

  • Pobierz https://curl.haxx.se/ca/cacert.pem do c:\php
  • włącz openssl echo extension=php_openssl.dll >> c:\php\php.ini
  • Zlokalizuj certyfikat echo curl.cainfo=c:\php\cacert.pem >> c:\php\php.ini
 0
Author: Facedown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-11 12:03:53

Jeśli żadne z powyższych rozwiązań nie działa, spróbuj zaktualizować swoją instalację XAMPP do nowszej wersji.

Uruchamiałem XAMPP z php 5.5.11, ten sam kod nie działał, zaktualizowałem do XAMPP z php 5.6.28 i powyższe rozwiązania działały.

DODATKOWO tylko aktualizacja PHP też nie zadziałała wydaje się kombinacją ustawień apache i php w tej wersji XAMPP.

Mam nadzieję, że to komuś pomoże.

 0
Author: ccrez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-06 18:05:00

Jeśli wiesz, że sam xampp dostarcza już źródło, zobacz i zrób to tutorial

 0
Author: Eka putra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 17:29:42