2 способа SSL с CURL PHP не работает - PullRequest
0 голосов
/ 25 июня 2018

В SOAPUI я импортирую файл .pfx только в настройках SSL, затем тестирую методы API, и он работает без проблем.Теперь я хочу реализовать тот же рабочий пример в SOAPUI для моего приложения PHP.Итак, я использовал CURL PHP для управления им.В основном я импортирую тот же сертификат, который использовал в интерфейсе SOAP, в свой файл PHP.Я хочу получить доступ к защищенному серверу с помощью моего открытого ключа, используя мой закрытый ключ.

ОБНОВЛЕНИЕ: 29 июня 2018 года

Файл PFX: test-cert.pfx

 $url = 'https://domain.com.ph/api/id_num';

    $headers = array(
                    "Content-Type: application/json",
                    "token really_long_numbers",
                    );

    $curl = curl_init();

curl_setopt ($curl, CURLOPT_URL, $url );        
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_PORT , 443);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 2);
curl_setopt($curl, CURLOPT_SSLVERSION, 1);
curl_setopt($curl, CURLOPT_SSLCERT, "/Applications/XAMPP/xamppfiles/htdocs/d/client.pem");
curl_setopt($curl, CURLOPT_SSLKEY, "/Applications/XAMPP/xamppfiles/htdocs/d/key.pem");
curl_setopt($curl, CURLOPT_SSLKEYPASSWD, "******");
curl_setopt($curl, CURLOPT_CAINFO, "/Applications/XAMPP/xamppfiles/htdocs/d/cacert.pem");

Я попытался сгенерировать CA из PFX, используя следующую команду:

openssl pkcs12 -in test-cert.pfx -out test-cert.pem -clcerts

И / ИЛИ

openssl pkcs12 -in test-cert.pfx -out test-cert.pem -clcerts -nodes

Новая ошибка теперь

Ошибка cURL #: проблема с сертификатом SSL: невозможно получить сертификат локального эмитента

ОБНОВЛЕНИЕ: 2 июля 2018

Я уже добавил следующую строку в файл php.ini и, конечно, скачал файл cacert.pem из http://curl.haxx.se/ca/cacert.pem

[curl];Значение по умолчанию для опции CURLOPT_CAINFO.Это должно быть;абсолютный путь.

curl.cainfo="/Applications/XAMPP/xamppfiles/etc/openssl/certs/cacert.pem"
openssl.cafile="/Applications/XAMPP/xamppfiles/etc/openssl/certs/cacert.pem"

Мой файл конфигурации php.ini находится

Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

и добавил строку ниже в curl

CURLOPT_CAINFO => '/ path / to/my/exported/cacert.pem'

CURLOPT_CAPATH => '/path/to/my/exported/cacert.pem'

Я также включаю следующие строки php_openssl.dll и mod_ssl в конфигурации apache и php.ini

Наконец, я также скачал ca-bundle.crt в cacert.pem.

все равно это не сработало.

1 Ответ

0 голосов
/ 26 июня 2018
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_PORT , 443);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 2);
curl_setopt($curl, CURLOPT_SSLVERSION, 1);
curl_setopt($curl, CURLOPT_SSLCERT, getcwd() . "/my_cert.pem");
curl_setopt($curl, CURLOPT_SSLKEY, getcwd() . "/my_key.pem");
curl_setopt($curl, CURLOPT_CAINFO, getcwd() . "/cacert.pem");

Необходимо указать все 3 - ваш закрытый ключ (SSLKEY), ваш открытый сертификат (SSLCERT) и цепочку центра сертификации (CAINFO) вплоть до корневого CA.Ключ и сертификаты должны быть в текстовом формате PEM вместо PFX

openssl pkcs12 -in test-cert.pfx -out test-cert.pem -nodes

ОБНОВЛЕНИЕ: 29 июня 2018

Загрузить http://curl.haxx.se/ca/cacert.pem (илиhttps://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt, который также содержит сертификаты RSA-1024) в /Applications/AMPPS/extra/etc/openssl/certs/cacert.pem Затем обновите php.ini и перезапустите 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...