В 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
.
все равно это не сработало.