Я пытаюсь подключиться к API единого входа, используя Curl в PHP
Но я получаю ошибку -8018.
Я преобразовал закрытый ключ в ключ RSA. Но все же я ошибка.
Вот источник PHP:
$cert_file = 'etc/pki/nssdb/new.pem';
$cert_password = '123456';
curl_setopt_array($curl, array(
CURLOPT_URL => "UUL"CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 300,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_SSLCERT => $cert_file,
CURLOPT_SSLCERTPASSWD => $cert_password,
CURLOPT_SSLCERTTYPE => 'pem',
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"X-IAS-APIKEY: PEdk3kOkMtYsYzfb",
'Content-Length: 0',
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
}
Вот результат (после добавления сертификата в БД NSS)
Я решил проблему. Проблема была в ключе RSA без информации о сертификате. Я преобразовал ключ сертификата в RSA, но в этом файле нет информации о сертификате, которую мы должны предоставить вместе с ключом. Таким образом, экспортируя открытую часть, будет работать частная часть RSA и, наконец, объединить ее в коде.
$cert_password = '****';
curl_setopt_array($curl, array(
CURLOPT_URL => URL,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 300,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_SSLCERT => $cert_file,
CURLOPT_SSLKEY => $cert_key,
CURLOPT_SSLCERTPASSWD => $cert_password,
CURLOPT_SSLCERTTYPE => 'pem',
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"X-IAS-APIKEY: APIKEY",
'Content-Length: 0',
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
Я надеюсь, что этот ответ может кому-то помочь.
Благодарю вас
Я пытаюсь подключиться к API единого входа, используя Curl в PHP
Но я получаю ошибку -8018.
Я преобразовал закрытый ключ в ключ RSA. Но все же я ошибка.
Вот источник PHP:
$cert_file = 'etc/pki/nssdb/new.pem';
$cert_password = '123456';
curl_setopt_array($curl, array(
CURLOPT_URL => "UUL"CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 300,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_SSLCERT => $cert_file,
CURLOPT_SSLCERTPASSWD => $cert_password,
CURLOPT_SSLCERTTYPE => 'pem',
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"X-IAS-APIKEY: PEdk3kOkMtYsYzfb",
'Content-Length: 0',
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
}
Вот результат (после добавления сертификата в БД NSS)
Я решил проблему. Проблема была в ключе RSA без информации о сертификате. Я преобразовал ключ сертификата в RSA, но в этом файле нет информации о сертификате, которую мы должны предоставить вместе с ключом. Таким образом, экспортируя открытую часть, будет работать частная часть RSA и, наконец, объединить ее в коде.
$cert_password = '****';
curl_setopt_array($curl, array(
CURLOPT_URL => URL,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 300,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_SSLCERT => $cert_file,
CURLOPT_SSLKEY => $cert_key,
CURLOPT_SSLCERTPASSWD => $cert_password,
CURLOPT_SSLCERTTYPE => 'pem',
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"X-IAS-APIKEY: APIKEY",
'Content-Length: 0',
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
Я надеюсь, что этот ответ может кому-то помочь.
Благодарю вас